在Docker VM中,Gulp-Watch似乎在主机操作系统托pipe的卷上效果不佳

所以我有一个设置,可能像大多数人一样,他们的应用程序代码通过一个单独的卷装入Docker容器。

问题是,如果我运行gulp,特别是gulp-watch,在Docker中监视文件修改等,在docker容器中安装的应用程序代码中,根据需要正确地构build和重新启动docker容器内的节点,似乎以获得CPU密集型(如轮询文件更改,而不是侦听文件更改事件)到我的机器扣的点。

我认为这是由于文件系统从本地主机装载到docker集装箱的限制,但人们如何解决这个问题呢? 他们是否在集装箱内完成所有的工作? 本地主机,然后不断build设? 或者我错过了我的设置不正确的地方使用gulp-watch / nodemon?

尝试改变gulp.watch 选项 。 这对我来说好多了:

 gulp.watch('./**/*', {interval: 1000, mode: 'poll'}, ['build']); 

对于任何人使用gulp4

我能得到这个工作的唯一方法就是使用下面的“usePolling”

 gulp.watch('./**/*', {interval: 1000, usePolling: true}, gulp.series('superTask')); 

你应该使用插件'gulp-watch'而不是gulp.watch。 后者使用stat轮询,这对于共享文件系统来说太重了。 'gulp-watch'使用inotify事件来观察OSX上的文件系统。

杰西的回答对我来说并不起作用,但是非常接近。 现在,选项似乎是:

 gulp.watch('./**/*', {interval: 1000, usePoll: true}, ['build']); 

mode字段已被切换为usePoll字段标志。

有关更多详细信息,请参阅API部分 。

Interesting Posts