问题
gulp watch
设置为在检测到错误时停止,从而强制需要手动重新启动 gulp watch。恼人的。
解决方案(不优雅,但有效)
首先,我的 gulp.js 现在是这样的:
var gulp = require('gulp'),
elixir = require('laravel-elixir'),
plumber = require('gulp-plumber');
gulp.task('default', function() {
});
gulp.task('watch', function() {
gulp.watch('resources/**', ['default']);
elixir(function(mix) {
mix
.sass('styles.scss', 'public/css')
.scripts(null,
'public/js/all.js',
'resources/assets/js'
)
.version([
'public/css/styles.css',
'public/js/all.js'
])
}).pipe(plumber());
});
我做了什么:
- 我安装了 gulp 管道工
$ npm install --save-dev gulp-plumber
- 我需要 gulp 管道工和我的 gulp 文件的基本 gulp 依赖项
- 我定义了一个空的默认任务,否则 gulp 不会和我一起玩......
- 我创建了一个名为“watch”的 gulp 任务,否则
gulp watch
无法像以前那样在命令行中工作。
- 我定义了
gulp.watch()
使 gulp,嗯,看?
.pipe(plumber());
如果我的长生不老药功能,我会在最后附加。管道工是防止 gulp watcher 因错误而崩溃的东西
因此,为了方便您,将下面的代码复制粘贴到您的 gulp.js 文件中,运行$ npm install --save-dev gulp-plumber
并填写您自己的组合
var gulp = require('gulp'),
elixir = require('laravel-elixir'),
plumber = require('gulp-plumber');
gulp.task('default', function() {
});
gulp.task('watch', function() {
gulp.watch('resources/**', ['default']);
elixir(function(mix) {
//Your own elixir code as you know it.
}).pipe(plumber());
});
请注意,当您运行gulp watch
. 忽略它。尝试保存一个 scss 或 js 文件,重新加载 brwoser,您会看到 gulp 和 elixir 工作正常。
错误:

抓到!!!
- 跑步
gulp
现在什么都不做。
- 如果您犯了语法错误,则观察者将停止,直到您修复错误为止。但是,您不必手动重新启动它。说,如果你错过了 ; 在您的 scss 中,只要添加 ; 它就会再次工作 并保存。
注意:这是一个黑客。不是很优雅。但它有效。根据此线程中的 contra:https ://github.com/gulpjs/gulp/issues/71 gulp v.4.xx 应该解决 gulp watch 在发现错误时崩溃的问题