Подтвердить что ты не робот

Как добавить файлы src в середине канала

Я хочу обработать некоторые файлы с помощью "кофе", добавить некоторые 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'))

Есть ли способ добавить файлы после части кофе?

4b9b3361

Ответ 1

Вам не нужно добавлять файлы в исходный файл src, а использовать кофе только "если"...

Итак, используйте gulp-if

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

Смотрите здесь подробнее о gulp -if.

Ответ 2

Ответ @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

Ответ 3

Вы можете использовать плагин 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'))

Ответ 4

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