我正在尝试让watchify与Gulp一起工作,但似乎'update‘事件从未触发过。
这是我的gulpfile.js:
"use strict";
var gulp = require('gulp');
var browserify = require('browserify');
var source = require("vinyl-source-stream");
var watchify = require('watchify');
var bundler = watchify(browserify({entries: ['./client/app/app.js'], cache: {}, packageCache: {}, fullPaths: true}));
gulp.task('js', bundle);
function bundle() {
console.log('bundle');
return bundler.bundle()
.pipe(source('bundle.js'))
.pipe(gulp.dest('./dist'));
}
// this is never fired!
bundler.on('update', bundle);但是,当我显式地查看文件而不使用watchify时,它可以正常工作:
"use strict";
var gulp = require('gulp');
var browserify = require('browserify');
var source = require("vinyl-source-stream");
var watchify = require('watchify');
function bundle() {
console.log('bundle');
return browserify('./client/app/app.js')
.bundle()
.pipe(source('bundle.js'))
.pipe(gulp.dest('./dist/'));
}
gulp.task('browserify', bundle);
gulp.task('js', function() {
bundle();
gulp.watch(['client/**/*.js'], ['browserify']);
});我尝试过许多示例,但使用watchify时,包永远不会更新。
我在Vagrant VM中运行Gulp,主机是OSX Yosemite,客户是Ubuntu 14.04。
任何帮助都是非常感谢的!
发布于 2015-01-05 23:49:54
我也遇到了同样的问题,我发现问题并不是watchify update事件永远不会触发,而是默认情况下它不会输出任何日志记录信息。
如果您将更新绑定更改为此,我想您会发现它实际上正在触发:
// this is never fired!
bundler.on('update', function () {
console.log('update event');
bundle();
});这就是为什么在gulp starter中他们构建了一个用于捆绑的custom logger。
更新: Danny (OP)写道:“我已经尝试过了,以验证处理程序是否已被解雇。但是你的回答给了我正确的方向,因为当我直接在虚拟机中使用vi编辑文件时,它是有效的!工作区被挂载到vagrant中的一个共享文件夹中,我也在这个VM中运行gulp。当我在主机上的编辑器中编辑文件时,update事件没有被触发,所以显然这里的某些东西不能很好地处理漫游共享文件夹。当我在主机上运行吞咽时,一切工作正常。我们的想法是将所有内容都保留在VM中,但实际上这很好(而且更快!)
发布于 2015-06-10 05:55:18
您可以使用poll选项激活它。
var w = watchify(b, {
poll: true
});来自文档的: opts.poll启用轮询来监视更改。如果设置为true,则使用100ms的轮询间隔。如果设置为一个数字,则毫秒数将是轮询间隔。有关更多信息,请参阅Chokidar关于"usePolling“和"interval”的documentation。如果您正在查看NFS卷,则此选项非常有用。
发布于 2015-03-19 18:05:17
这是因为watchify依赖inotify来检测文件更改,只要这些更改是从虚拟机内部启动的(例如,在这些文件上使用touch ),它就会工作得很好。但是,它不会获取在外部执行的更改,因为当主机系统中的文件发生更改时,limitation with VirtualBox不会在来宾系统中触发相应的事件。显然,VMware患有same problem。
目前有一些讨论可以退回到watchify和chokidar ( watchify实际上用来监视文件)中的网络挂载轮询,以缓解这个特定的问题:
https://stackoverflow.com/questions/27619248
复制相似问题