我正在尝试连接 gulp-browserify
和 gulp-watch
每次源文件更改时重建我的包。但是,gulp-browserify
需要一个单一的编译入口点(例如 src/js/app.js
)并获取每个依赖项本身:
gulp.src('src/js/app.js')
.pipe(browserify())
.pipe(gulp.dest('dist'))
但是,使用 gulp-watch
这无法在每次更改时重建,因为只监视入口点文件。我真正需要的是可以监视多个文件,然后只处理入口点文件(查找 replaceEverythingWithEntryPointFile
):
gulp.src("src/**/*.js")
.pipe(watch())
.pipe(replaceEverythingWithEntryPointFile()) // <- This is what I need
.pipe(browserify())
.pipe(gulp.dest("dist"));
所以问题是:如何将 gulp-browserify
指向入口点文件并在任何源文件发生更改时触发重建?如果解决方案包括节流,那就太好了:启动时,每个源文件都被设置为监视,因此我们的入口点文件将被管道传输到 gulp-browserify
文件的次数与文件数量一样多,这是不必要的。
最佳答案
只需在文件更改时调用普通任务,如下所示:
gulp.task("build-js", function() {
return gulp.src('src/js/app.js')
.pipe(browserify())
.pipe(gulp.dest('dist'))
});
gulp.task("watch", function() {
// calls "build-js" whenever anything changes
gulp.watch("src/**/*.js", ["build-js"]);
});
如果你想使用gulp-watch
(因为它可以寻找新文件),那么你需要做这样的事情:
gulp.task("watch", function() {
watch({glob: "src/**/*.js"}, function() {
gulp.start("build-js");
});
});
使用 gulp-watch
也有批处理操作的好处,所以如果你一次修改多个文件,你不会连续得到一堆构建。
关于javascript - 如何使用 gulp-browserify 观看多个文件但只处理一个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21818188/