仅对 Gulp 任务中文件夹中的文件子集使用 Browserify



通常使用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'));
});

相关内容

  • 没有找到相关文章

最新更新