Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gulp 大口大口地看一次_Gulp_Gulp Watch - Fatal编程技术网

Gulp 大口大口地看一次

Gulp 大口大口地看一次,gulp,gulp-watch,Gulp,Gulp Watch,我正在使用这个大口手表样本: 当我在Windows 8计算机上运行它时,它仅在我第一次更改文件时运行: C:\test>gulp watch [08:40:21] Using gulpfile C:\test\gulpfile.js [08:40:21] Starting 'watch'... [08:40:21] Finished 'watch' after 2.69 ms [08:40:31] Starting 'build'... Working! [08:40:31] Finish

我正在使用这个大口手表样本:

当我在Windows 8计算机上运行它时,它仅在我第一次更改文件时运行:

C:\test>gulp watch
[08:40:21] Using gulpfile C:\test\gulpfile.js
[08:40:21] Starting 'watch'...
[08:40:21] Finished 'watch' after 2.69 ms
[08:40:31] Starting 'build'...
Working!
[08:40:31] Finished 'build' after 261 µs

下次什么都没发生。为什么?

如果仔细阅读文档,您会看到以下短语:

您可以传递普通回调,该回调将在每个事件上调用,或者将其包装在gulp批处理中以运行一次

所以,基本上就是对
大口大口喝的处理。要经常观看,只需删除批处理调用:

gulp.task('build', function (done) { 
    console.log('Working!'); 
    done();
});

gulp.task('watch', function () {
    watch('app/*.js', function () {
        gulp.start('build');
    });
});
(并将'done'回调添加到
build
,以便在完成时让Gulp知道)

顺便说一句。。。我不确定,但我认为,
gulpwatch
不仅可以查看文件,还可以直接返回一个乙烯基对象。因此,实际上使用内置的
gulp.watch应该具有相同的效果:

gulp.task('watch', function () {
    gulp.watch('app/**/*.js', ['build']);
});

我有同样的问题,并使用相同的ddprrt。区别在于使用目录通配符作为绝对路径

我改变了这一点:

 gulp.task('watch', function() {
   gulp.watch('sass/shortcutcss/*.scss', ['sass'])
 });
为此:

 gulp.task('watch', function() {
   gulp.watch('sass/**/*.scss', ['sass'])
 });

这个问题让我疯狂了一个周末。我尝试了所有:

  • 添加完成()-事件
  • 重命名/触摸/清除目标CSS
  • 对文件路径要更加具体
但是(这个问题的原因和)解决方案是如此简单,以至于在那之后我感到很可怜:

只是,我的是0.12.x!难怪这不起作用

之后,观看活动再次开始。有时它也会再次出错。但在这种情况下,只需再次保存文件,它就会被识别。(我想,
foundation/gulp watch
会检查对fast的更改,当您的文件被新上传的文件替换时)

对我来说,它是在任务中添加了一个“返回”:

gulp.task('styles', function(){
 return gulp.src('css/styles.css')
    .pipe(autoprefixer())
    .pipe(gulp.dest('build'));
});
说来话长:
对我来说,它很长时间都不起作用。看起来一切正常,但只运行一次

但突然间,我开始在另一个项目中使用parcel js,同样的事情发生在他们的内置手表上。所以我寻找答案,发现问题出在我的Vim设置上

回答:帮助我的是来自@acobster的这个

简而言之:

通过添加
set backupcopy=yes

更新
.vimrc
,您是否更改了任何文件?因为当您执行gulp watch时,它正在监视文件。当你更改一个文件时,watch中的函数会被激活。是的,也许我不够清楚。我正在更改文件,但只有在我第一次更改文件时才执行
监视。例如,如果我启动
gulp watch
,更改*.js文件中的某些内容并保存它,则watch正在运行。如果我在同一个文件中更改了其他内容并再次保存,那么watch将不会运行。
gulp watch
进程仍在运行,但什么也没发生。如果您仍想使用
gulp批处理
正确用法是在那里进行
done
回调:
done
-是对批处理函数信号的回调,表示您完成了。所以:
gulp.task('watch',function(){watch('***.js',batch(function(events,done){gulp.start('build');done();}));})相同的问题和相同的解决方案。也许在github上打开一个关于这个的问题会是一个好主意。我也有同样的问题,并通过添加通配符目录解决了它/***.scss,现在看来这个问题仍然相关。/***/通配符dir解决了我的问题。我必须对目录使用
**
通配符,对文件名使用
*
通配符。我不能使用确切的目录和文件名,奇怪!旧帖子,但让我再次引用@ddprrt所说的内容,
(并添加“完成”回调来构建,以便在完成时让Gulp知道)。
这几乎让我在墙上撞了几个小时。感谢manstarting with gulp 4,看来,
done
回调是必须的,thx!。。。或者传递并调用回调:
(cb)=>{something();cb();}
gulp.task('styles', function(){
 return gulp.src('css/styles.css')
    .pipe(autoprefixer())
    .pipe(gulp.dest('build'));
});