如何确定运行browserify的gulp任务何时完成?

时间:2016-06-02 20:41:24

标签: javascript gulp

我有这样一个gulp任务

gulp.task("js-min", function () {
  browserify(config.paths.mainJs)
    .transform(reactify)
    .bundle()
    .pipe(source('tec.min.js'))
    .pipe(buffer())
    .pipe(sourcemaps.init({loadMaps: true}))
    .pipe(uglify())
    .pipe(sourcemaps.write(config.paths.dist))
    .pipe(gulp.dest(config.paths.dist));
});

创建应用程序的缩小版本。它由gulp-watch任务定期运行。我看到的问题是,gulp告诉我这个任务在30ms内完成,但如果我检查生成的文件,则需要另外30秒才能看到正在更新的实际新文件。

如何更改gulp任务js-min,以便确切知道文件系统中文件何时完成更新。

1 个答案:

答案 0 :(得分:3)

有两种解决方案,并且不知道您正在使用的browserify包。

如果它是基于承诺的,那么只需编辑您的代码即可返回该承诺:

gulp.task("js-min", function () {
   return  browserify(config.paths.mainJs)

如果它基于承诺,那么它将采用某种采用回调的onenddone方法。在这种情况下,它会是这样的:

gulp.task("js-min", function (done) {
  browserify(config.paths.mainJs)
    .transform(reactify)
    .bundle()
    .pipe(source('tec.min.js'))
    .pipe(buffer())
    .pipe(sourcemaps.init({loadMaps: true}))
    .pipe(uglify())
    .pipe(sourcemaps.write(config.paths.dist))
    .pipe(gulp.dest(config.paths.dist))
    // THIS IS THE LINE TO CHANGE
    .onfinish(done);
});