Используйте сопоставление glob при передаче файлов для браузера в gulp

Все примеры, которые я видел с использованием browserify и gulp, предполагают, что вы хотите просмотреть только один файл. Обычно это не так.

Я наткнулся на пример, в котором использовались виниловые преобразования, но я не могу заставить его работать правильно. Вот код (кофе-скрипт):

# Browserify JS

gulp.task 'browserify', [], ->

    # Create the transform
    br = transform (f) ->
        return browserify(f).bundle()

    # Run browserify
    gulp.src(['./public/js/**/*.js'])
        .pipe(br)
        .pipe(gulp.dest('.'))

Но я получаю следующую ошибку:

[10:50:55] Starting 'browserify'...

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: write after end

person mrwooster    schedule 06.02.2015    source источник
comment
Обычно вы используете один файл в качестве точки входа, затем browserify строит граф зависимостей и добавляет все необходимые файлы. У вас есть полный каталог точек входа в браузер?   -  person Ben    schedule 07.02.2015
comment
Да, у меня есть несколько точек входа для браузера   -  person mrwooster    schedule 07.02.2015
comment
рассмотрите возможность использования require-globify   -  person chatoo2412    schedule 25.04.2016


Ответы (1)


Самый простой способ - использовать glob напрямую:

var glob = require('glob');

gulp.task('browserify', function() {
  var files = glob.sync('./public/js/**/*.js');
  return browserify({entries: files})
    .bundle()
    .pipe(gulp.dest('.'));
});
person Ben    schedule 06.02.2015
comment
Так просто, не могу поверить, что я так долго искал это! Спасибо - person mrwooster; 07.02.2015
comment
кажется, что передача массива в glob.sync больше недействительна, я пытался, но получил Type Error: glob pattern string required. Передача строки работала нормально. Кстати спасибо за ответ! - person bencrinkle; 27.03.2015
comment
используйте glob-array, если вы хотите передать массив - person mohamed-ibrahim; 04.01.2017