繁体   English   中英

Watchify并不总是检测javascript文件中的更改

[英]Watchify doesn't always detect changes in javascript files

我创建了一个gulp任务,用于使用browserify捆绑模块,我使用watchify来监视更改。 以下是watchify的gulp任务:

gulp.task('watch:browserify', function () {
    var opts = assign({}, watchify.args, {
        entries: ['./js/app.js'],
        debug: true,
        basedir: './app/',
        paths: ['./lib']
    });

    var b = watchify(browserify(opts));

    b.on('update', function () {
        bundle();
    });

    function bundle() {
        gutil.log(gutil.colors.blue("Starting Browserify..."));
        var time = Date.now();
        return b.bundle()
            .on('error', gutil.log.bind(gutil, gutil.colors.red('Browserify Error')))
            .pipe(source('bundle.js'))
            .pipe(buffer())
            .pipe(sourcemaps.init({loadMaps: true}))
            .pipe(sourcemaps.write('.'))
            .pipe(gulp.dest('app'))
            .on('end', function () {
                var duration = Date.now() - time;
                gutil.log(gutil.colors.blue('Finished Browserify') + " (%dms)", duration);
            })
    }

    bundle();
});

如果我编辑主js文件(./js/app.js),则始终检测到更改。 但是,当我编辑主文件所需的其他文件时,大致每隔一段时间(但并非总是)检测到更改。 我在这里做错了吗?

这是完整的Github回购,所以也许你完全了解我如何计划这个工作

您的代码示例有两个问题。

首先, watch:browserify必须要么需要一个回调或返回流,或者发生竞争条件,讨论在这里 因此,例如,您的任务中的最后一行可能是return bundle();

其次,使用watchify时,必须将cachepackageCache选项传递给browserify() ,如下所示并在此处指定。

    var b = browserify({ cache: {}, packageCache: {} });

最后,确保app.js实际上依赖于其依赖链中的某个位置,而不是您正在编辑的其他文件。

我有同样的问题,我已经提到@akarve所提到的一切正确。 我回去watchify: "^2.6.0" ,问题解决了。 然而,构建/检测时间稍微慢一点 - 大约半秒钟。 然而,偶尔(经常!)没有比watchify检测到我的更改更好。

这里的相关讨论(也是我发现有关v2.6.0的评论) - https://github.com/substack/watchify/issues/216#issuecomment-119285896

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM