在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部分 。