6

我正在尝试在我的索引中注入一些文件,所有这些文件都连接并缩小到 .tmp 文件夹中,如下所示:

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'))
});

但是当我运行注入任务时,它会显示“Nothing to injection into 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'));
});

有趣的是,注入主要 bower 文件的第一个管道运行良好,但以下两个管道不会发生这种情况。

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

对这个问题有任何想法吗?

4

1 回答 1

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运行完成,这意味着连接和 uglified 的 JS 文件还.tmp/page/js没有。

Gulp 文档的相关部分:

注意:默认情况下,任务以最大并发运行——例如,它一次启动所有任务并且什么都不等待。如果你想创建一个任务以特定顺序运行的系列,你需要做两件事:

  • 给它一个提示,告诉它什么时候完成任务,
  • 并暗示一项任务取决于另一项任务的完成。
于 2016-02-12T14:55:18.637 回答