gulp-useref" additionalStreams"不合并

时间:2015-10-19 14:04:43

标签: javascript angularjs gulp-useref

所以我有一个简单的用例,它看起来非常类似于https://github.com/jonkemp/gulp-useref自述文件中描述的用例。

我尝试在构建期间生成包含所有Angular模板的templates.js文件。我试图这样做,并在我的本地项目中没有templates.js文件。因此,我们的想法是将模板流的输出合并到useref流中,以便生成的scripts.js文件包含我的索引文件中指示的所有文件以及生成的templates输出。

这是我在gulp任务中所拥有的:

gulp.task('usemin:dist', ['clean:dist'], function() {
  var templatesStream = gulp.src([
    './app/**/*.html',
    '!./app/index.html',
    '!./app/404.html'
  ]).pipe(templateCache({
    module: 'myCoolApp'
  }));

  var assets = $useref.assets({
    additionalStreams: [templatesStream]
  });

  return gulp.src('./app/index.html')
      .pipe(assets)
      .pipe(assets.restore())
      .pipe($useref())
      .pipe(gulp.dest('./dist/'));
});

现在这应该允许我合并templatesStream的输出并将其全部转换为一个scripts.js文件,我认为......

我还尝试在我的索引文件中使用<script src="scripts/templates.js"></script>多种表单来尝试和协助它。似乎没有用。

其他人在做同样的事吗?似乎是一个常见的用例。

1 个答案:

答案 0 :(得分:2)

通过仔细查看测试用例,我能够使用它。 我现在在templates.js文件上有一个index.html脚本标记,在我的本地环境中将为404。

我的gulp任务看起来像这样:

gulp.task('useref:dist', ['clean:dist'], function() {
  var templateStream = gulp.src([
    './app/**/*.html',
    '!./app/index.html',
    '!./app/404.html'
  ]).pipe(templateCache({
    module: 'digitalWorkspaceApp'
  }));

  var assets = $useref.assets({
    additionalStreams: [templateStream]
  });
  var jsFilter = $filter('**/*.js', {restore: true});

  return gulp.src('./app/index.html')
    .pipe(assets)
    .pipe($useref())
    .pipe(gulp.dest('./dist/'));
});

我立刻无法看到差异,但它可能都取决于我在index.html中添加这个不存在的文件。