通常使用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'));
})
我想用动态创建的过滤文件列表替换条目,这样每次添加我想要浏览器化的新文件时都不必更新数组,而是自动执行此操作。
为此,我开始使用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'));
})
但是这会抛出一个未处理的错误事件 - 也许是因为在bundle方法运行之前源文件没有被连接起来?
因此,这引导我询问是否有人有任何类似或类似的经历?我很擅长吞咽,所以任何指针也会受到赞赏。感谢。
答案 0 :(得分:2)
请改用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'));
});