Coffeescript 如何在管道中间添加SRC文件

Coffeescript 如何在管道中间添加SRC文件,coffeescript,gulp,Coffeescript,Gulp,我想用“咖啡”处理一些文件,添加一些js文件,concat和minify 这不起作用,coffee在常规js文件上失败: gulp.task 'build-js', -> gulp.src([ "bower_components/mbdev-core/dist/js/db.js" "bower_components/mbdev-core/dist/js/utils.js" "src/js/config/app.coffee" "src/j

我想用“咖啡”处理一些文件,添加一些js文件,concat和minify

这不起作用,coffee在常规js文件上失败:

gulp.task 'build-js', ->
  gulp.src([
      "bower_components/mbdev-core/dist/js/db.js"
      "bower_components/mbdev-core/dist/js/utils.js"
      "src/js/config/app.coffee"
      "src/js/config/app-db.coffee"              
      "src/js/accounts/accounts.coffee"
      "src/js/budget_items/budget_items.coffee"
      "src/js/line_items/line_items.coffee"
      "src/js/misc/misc.coffee"
      "src/js/reports/report_generators.coffee"
      "src/js/reports/reports.coffee"
   ])
  .pipe(coffee()).on('error', gutil.log)
  .pipe(concat('app.js'))
  .pipe(gulp.dest('public/js'))

有没有办法在coffee部分之后添加文件?

您不需要将文件添加到原始src,而是只在“如果”

因此,如果

gulp.task('task', function() {
  gulp.src('./stuff/*')
    .pipe(gulpif(/[.]coffee$/, coffee()))
    .pipe(gulp.dest('./dist/'));
});

查看有关gulp if的更多信息。

gulp.src流是直通流,因此您可以在管道中的任何点添加它们

gulp.task 'build-js', ->
  gulp.src([
      "src/js/config/app.coffee"
      "src/js/config/app-db.coffee"              
      "src/js/accounts/accounts.coffee"
      "src/js/budget_items/budget_items.coffee"
      "src/js/line_items/line_items.coffee"
      "src/js/misc/misc.coffee"
      "src/js/reports/report_generators.coffee"
      "src/js/reports/reports.coffee"
  ])
  .pipe(coffee()).on('error', gutil.log)
  .pipe(gulp.src([
      "bower_components/mbdev-core/dist/js/db.js"
      "bower_components/mbdev-core/dist/js/utils.js"
  ]))
  .pipe(concat('app.js'))
  .pipe(gulp.dest('public/js'))

@康特拉的回答对我不起作用。新的溪流取代了旧的溪流,而不是加入它们

您应该以这种方式组合流:

es = require("event-stream")

es.concat(
  gulp.src('*.coffee')
  .pipe(coffee()),
  gulp.src('*.js')
).pipe(concat('all.js'))
.pipe(gulp.dest('.'))
你们可以在这里看到官方的指南

如果您关心流中的顺序,则应使用
streamqueue
而不是
事件流

您可以使用插件:


您可以尝试使用gulputil模块中的
combine
,这太棒了。我不知道gulp是否有这些额外的功能。你可以用它做很多事情!是的,我正在学着去爱它,并且扔掉了我自己的一些装模作样的助手:)事实上,我对gulpif有一个问题。问题链接:当我进行监视时,出现编译错误,会中断监视过程:(这太好了,但对我来说不起作用。我只从最后一口中获取文件。src我也有同样的问题,最后一口是赢的,这是一个bug还是一个特殊的吞咽选项?我在其他地方看到过这一点,但gulp似乎不再以这种方式对待gulp.src流。哇,-1?这太有趣了。因为,你知道,这家伙很愤怒但是GULP 4.x中只修复了哪些错误:Streamqueue不能正确处理错误,特别是GULP jshint:-/如果文件需要按照原始文件数组的特定顺序排列,这不会也会丢失文件顺序吗?从GULP v 4.0.0开始,Contra的答案是有效的。如果我需要*.js文件排在第一位,该插件是不赞成。
addsrc = require 'gulp-add-src'

gulp.task 'build-js', ->
  gulp.src(['src/coffee/*.coffee'])
    .pipe(coffee()).on('error', gutil.log)
    .pipe(addsrc(['src/js/somefile.js', 'src/js/otherfile.js']))
    .pipe(concat('app.js'))
    .pipe(gulp.dest('public/js'))