2016-02-12 18 views
6

我想在我的索引注入一些文件,它们都串联和精缩到一个名为.tmp的文件夹,如下所示:咕嘟咕嘟-注入说“没什么可注入的index.html”

gulp.task('prep-js',['clean'], function(){ 
    var jspath = './src/page/**/*.js'; 
    var treatJs = gulp.src(jspath) 
     .pipe(plugins.concat('scripts.js')) 
     .pipe(plugins.uglify()) 
     .pipe(gulp.dest('.tmp/page/js')) 
}); 

但是当我运行注入任务时,它说“没有注入到index.html”。下面的代码:

gulp.task('inject-deps', ['prep-css', 'prep-js'], function(){ 

    //select main bower files 
    var bowerDep = gulp.src(plugins.mainBowerFiles(), {read: false}); 

    //inject files 
    return gulp.src('./src/page/index.html') 
      .pipe(plugins.inject(bowerDep, {relative: true, name:'bower'})) 
      .pipe(plugins.inject(gulp.src('.tmp/page/js/*.js'), {name:'frontjs'})) 
      .pipe(plugins.inject(gulp.src('.tmp/page/css/*.css'), {name:'frontcss'})) 
      .pipe(gulp.dest('.tmp/page')); 
}); 

有趣的事情,在注入了主凉亭文件中的第一管完美的作品,但它不会发生以下两种。

此外,仅供参考,'插件'是一个需要插件的变量。

有关此问题的任何想法?

回答

3

您需要在您的prep-js任务返回流:

gulp.task('prep-js',['clean'], function(){ 
    var jspath = './src/page/**/*.js'; 
    return gulp.src(jspath) 
     .pipe(plugins.concat('scripts.js')) 
     .pipe(plugins.uglify()) 
     .pipe(gulp.dest('.tmp/page/js')) 
}); 

否则inject-deps不会等待prep-js完成,然后再运行,这意味着重组并变丑JS文件不会在.tmp/page/js尚未。在Gulp documentation

相关部分:

注意:默认情况下,任务,最大并发运行 - 例如它立即启动所有任务并且一无所获。如果你想创建一个系列赛里的任务在一个特定的顺序运行,你需要做两件事情:

  • 给它一个提示,告诉它当任务完成后,
  • ,并给它一个暗示任务取决于另一个任务的完成。
+0

谢谢@svenschoenung!但是,当我指定依赖任务时,如[[prep-css','prep-js']],是不是还没有完成? –

+0

不,为了防止任务同时运行,您需要两个**我从文档中引用的项目符号。你有第二个(用'['prep-css','prep-js']'暗示依赖关系,但是你错过了第一个(我粗体的那个)。 –

+0

所以,这意味着我需要使用回调,对吧? –