通常使用Browserify,如果要合并多个文件,请运行如下所示的操作:
gulp.task('build-tests', function() {
var b = browserify({
entries: ['./lib/some_specs.js', './lib/some_more_specs.js']
});
b.bundle().pipe(source('specs.js')).pipe(gulp.dest('./dist'));
})
我想用动态创建的文件过滤列表替换条目,这样就不必在每次添加我想要 Browserized 的新文件时都更新数组,它会自动执行此操作。
为此,我开始使用gulp-filter从文件夹中选择我希望浏览器化的文件:
gulp.src('lib/*.js')
.pipe(gulpFilter('*_specs.js'))
.pipe(concat('specs.js'))
);
但是,由于这会返回异步流而不是数组,因此不能使用此条目代替。然后我想我可以将单独的文件连接成一个虚拟文件,然后将其传递给 Browserify。喜欢这个:
gulp.task('build-tests', function() {
var b = browserify(
gulp.src('lib/*.js')
.pipe(gulpFilter('*_specs.js'))
.pipe(concat('specs.js'))
);
b.bundle().pipe(source('specs.js')).pipe(gulp.dest('./dist'));
})
但这会引发一个未处理的错误事件 - 也许是因为在捆绑方法运行之前源文件尚未连接?
因此,这让我问是否有人有执行类似或类似操作的经验?我对吞咽很陌生,所以任何指示也将不胜感激。谢谢。
请改用 glob 模块。
var glob = require('glob').sync;
gulp.task('build-tests', function () {
var b = browserify({
entries: glob(['./lib/**/*.js'])
});
b.bundle().pipe(source('specs.js')).pipe(gulp.dest('./dist'));
});