javascript - 如何使用 gulp-browserify 观看多个文件但只处理一个文件?

标签 javascript browserify gulp

我正在尝试连接 gulp-browserifygulp-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/

相关文章:

javascript - 如何使用jquery获取一行中的列

javascript - 使用 Browserify/CommonJS 的单例模式

gulp - 如何使用 Gulp Zip 压缩 zip 文件

gruntjs - gulp能否完全替代grunt?

javascript - 简单的 Bootstrap 轮播

javascript - 我如何在 php codeigniter 上运行 ajax

javascript - 获取具有相同 ID 和名称的输入值

javascript - 如何理解 Grunt 任务选项

backbone.js - 如何解决同一页面上的 browserify(基于 Backbone 的应用程序)和 require.js 之间的冲突?

npm - Gulp-cli 版本没有更新