У меня есть проект с несколькими относительно непересекающимися страницами, каждый из которых содержит собственный скрипт точки входа. Эти скрипты require
ряд других, использующих синтаксис commonjs, и должны быть преобразованы с помощью 6to5 и в комплекте с помощью браузера.Chain Gulp glob, чтобы прояснить преобразование
Я хотел бы настроить задачу gulp, которая захватывает все файлы, соответствующие шаблону, и передает их на соединитель, но я не уверен, как передавать файлы с gulp.src
на browserify(filename)
.
Мой gulpfile выглядит следующим образом:
var gulp = require("gulp");
var browserify = require("browserify");
var to5browserify = require("6to5-browserify");
var source = require("vinyl-source-stream");
var BUNDLES = [
"build.js",
"export.js",
"main.js"
];
gulp.task("bundle", function() {
/* Old version, using glob:
return gulp.src("src/** /*.js")
.pipe(sixto5())
.pipe(gulp.dest("dist"));
*/
// New version, using array:
return BUNDLES.map(function (bundle) {
return browserify("./src/" + bundle, {debug: true})
.transform(to5browserify)
.bundle()
.pipe(source(bundle))
.pipe(gulp.dest("./dist"));
});
});
gulp.task("scripts", ["bundle"]);
gulp.task("html", function() {
return gulp.src("src/**/*.html")
.pipe(gulp.dest("dist"));
});
gulp.task("styles", function() {
return gulp.src("src/**/*.css")
.pipe(gulp.dest("dist"));
});
gulp.task("default", ["scripts", "html", "styles"]);
Это похоже на работу, но не ремонтопригодно: я буду добавлять несколько сценариев относительно скоро, и не хочу, чтобы добавить их в массив каждый раз, когда ,
Я пробовал использовать gulp.src(glob).pipe
в окне вызова и вызова после вызова (shown here) и gulp.src(glob).map
(метод не существует).
Как вы можете связать gulp.src
с трансформатором, основанным на имени, как и для браузера?
Это кажется ужасно близким, но у меня проблема с участием 6to5. Используя ваш код, но добавляя вызов '.transform()' перед '.bundle()' вызывает ошибку «write after end». Я попытался добавить параметр '{read: false}' к вызову 'gulp.src', но это привело к тому, что мой dist-каталог был пустым. – ssube
Использование 'pipe (through.obj())' избавляется от ошибки «write after end», но выходной файл просматривается *, но не 6to5-ified *. – ssube
После редактирования (и некоторое время, проведенное в чате) это, похоже, решило проблему. Это похоже на немного взлома, но, похоже, хорошо работает (локально и в CI). – ssube