35

我想用'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'))

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

4

4 回答 4

54

您不需要将文件添加到原始 src,而是只使用咖啡“如果”...

所以,使用gulp-if

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

在这里查看更多关于 gulp-if 的信息。

于 2014-02-12T09:20:39.530 回答
17

@Contra 的答案对我不起作用。新流取代了旧流,没有加入他们。

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

es = require("event-stream")

es.concat(
  gulp.src('*.coffee')
  .pipe(coffee()),
  gulp.src('*.js')
).pipe(concat('all.js'))
.pipe(gulp.dest('.'))

您可以在此处查看有关此内容的官方指南在一项任务中使用多个来源

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

于 2014-02-24T05:46:03.620 回答
16

您可以使用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'))
于 2014-05-14T08:04:50.563 回答
13

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'))
于 2014-02-14T06:23:02.730 回答