[英]Watchify update event never fires in Virtualbox
我试图让Watchify与Gulp合作,但似乎“更新”事件从未被解雇。
这是我的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);
但是,当我明确地观察文件而没有观察时它起作用:
"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']);
});
我已经尝试了很多例子但是看看捆绑从不更新。
我在Vagrant VM中运行Gulp,主机是OSX Yosemite,客户是Ubuntu 14.04。
任何帮助是极大的赞赏!
您可以使用poll
选项激活它。
var w = watchify(b, {
poll: true
});
从docs: opts.poll
启用轮询以监视更改。 如果设置为true,则使用100ms的轮询间隔。 如果设置为数字,那么该毫秒数将是轮询间隔。 有关更多信息,请参阅Chokidar关于“usePolling”和“interval”的文档 。 如果您正在观看NFS卷,则此选项很有用。
我遇到了同样的问题,我发现并不是说watchify更新事件永远不会触发,而是默认情况下它不会输出任何日志记录信息。
如果你更新你的更新绑定,我想你会发现它实际上是在解雇:
// this is never fired!
bundler.on('update', function () {
console.log('update event');
bundle();
});
这就是为什么在gulp starter中他们为捆绑构建了一个自定义记录器 。
更新: Danny Moerkeke(OP)写道:“我已经尝试过这个来验证处理程序是否已被解雇但是它没有。但是你的回答让我朝着正确的方向发送,因为我直接在虚拟机中使用vi编辑文件时工作!工作空间在vagrant中安装到一个共享文件夹,我也在这个VM中运行gulp。当我在主机上的编辑器中编辑文件时,更新事件没有被触发,所以这里显然不适合使用vagrant共享文件夹。当我在主机上运行gulp一切正常。想法是将所有内容保存在VM中但实际上这很好(并且更快!)“
在Vagrantfile中将同步文件夹系统设置为 RSync解决了我的问题。
启用此功能后,当您在主机上的编辑器中更改文件时,它将通过客户端上的RSync动态复制,并相应地触发观察者事件。
为此,只需将以下配置添加到您的文件中:
Vagrant.configure("2") do |config|
config.vm.synced_folder ".", "/vagrant", type: "rsync",
end
在终端中,使用以下命令启动vagrant会话:
vagrant up && vagrant rsync-auto
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.