我有以下文件结构:
/ src
-- app.less
/ gulp
-- index.js
-- gulpfile.js
此文件结构安装在/ vagrant中的vagrant框中,这意味着app.less的路径变为/vagrant/src/app.less。 是的,我已经检查了这个。
gulpfile.js
require('./gulp');
index.js
var paths = {
less: '/vagrant/src/app.less'
};
gulp.task('less', function () {
console.log('less function running');
return gulp.src(paths.less)
.pipe(less());
});
gulp.task('watch:styles', function () {
console.log('watch function running');
gulp.watch(paths.less, gulp.series('less'));
});
gulp.task('watch', gulp.parallel('watch:styles'));
gulp -v 返回:
[10:02:05] CLI version 0.4.0
[10:02:05] Local version 4.0.0-alpha.1
gulp watch 返回:
[09:45:20] Using gulpfile /vagrant/gulpfile.js
[09:45:20] Starting 'watch'...
[09:45:20] Starting 'watch:styles'...
watch function running
我已经使用Gulp 4超过2个月而没有看到观察者的问题。从上周开始,观察者没有响应正在更改的文件。我尝试了几个编辑器,我尝试了多个路径,如'/vagrant/**/*.less'和'../src/*.less',甚至是app.less'/ vagrant / src的绝对路径/app.less',他们都没有工作。
经过一番研究后,我在Gulp 4的github回购中发现了几个关于观察者的问题。然而,我无法弄清楚问题是什么。也许我忽略了我的代码中的错误或文档中的新内容,但我试图解决这个问题,因为昨天早上没有任何运气。
答案 0 :(得分:1)
看来你正在使用Vagrant。如果您在Vagrant计算机上而不是在主机上运行Gulp,它将不会检测您在主机上创建的文件的任何更改。这是因为通知操作系统有关文件系统更改的事件不会传播到VM中。
如果是这种情况,解决方案是只需在实际更改文件的任何地方运行Gulp(即,如果您在VM上进行更改,在VM上运行它,如果您在主机上进行更改,则运行吞了主持人。)
也可以使路径相对,而不是将您的实现绑定到您的Vagrant框。即less: './src/app.less'
。