如何在管道中间添加src文件

mbd*_*dev 35 coffeescript gulp

我想用'coffee'处理一些文件,添加一些js文件,concat和minify.

这不起作用,咖啡在常规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'))
Run Code Online (Sandbox Code Playgroud)

有没有办法在咖啡部分后添加文件?

Man*_*utz 54

您不需要将文件添加到原始src,而是仅使用咖啡"if"...

所以,使用 gulp-if

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

这里更多一饮而尽,如果.


hys*_*ace 17

@Contra的回答对我不起作用.新流取代了旧流,没有加入它们.

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

es = require("event-stream")

es.concat(
  gulp.src('*.coffee')
  .pipe(coffee()),
  gulp.src('*.js')
).pipe(concat('all.js'))
.pipe(gulp.dest('.'))
Run Code Online (Sandbox Code Playgroud)

你可以在这里看到关于这个的官方指南在一个任务中使用多个源

如果你关心流中的顺序,你应该使用streamqueue而不是event-stream


uri*_*ish 15

你可以使用gulp-add-src插件:

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'))
Run Code Online (Sandbox Code Playgroud)

  • 此插件已弃用. (2认同)

Con*_*tra 12

gulp.src流是passthroughs,因此您可以在管道中的任何位置添加它们

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'))
Run Code Online (Sandbox Code Playgroud)

  • 仅在Gulp 4.x中修复:https://github.com/gulpjs/gulp/issues/840#issuecomment-74822819 (7认同)
  • 哇,-1?这太有趣了.Cuz,你知道,这家伙WROTE GULP.但是whatevs. (6认同)
  • 这将是伟大的,但它不适合我.我只从最后一个gulp.src获取文件 (5认同)
  • 我已经在其他地方看到过这个,但是gulp似乎不再以这种方式对待gulp.src流了. (4认同)
  • 我有同样的问题,最后一个gulp.src赢了,这是一个bug还是一个特殊的gulp选项? (3认同)
  • 最后gulp-src获胜,于2014年10月15日试用 (2认同)
  • 同样,只需要回到这个问题上,这个答案实际上是可行的。确保您不仅在混合中添加了另一个“ .src”,而且还需要将其放入管道方法调用中。这确实应该是公认的答案。 (2认同)
  • 在gulp 3.9.1中,最后一个gulp.src获胜. (2认同)