所以我非常喜欢灵药。
但是当我运行gulp watch并写css(scss准确)时,它会在几次保存后崩溃,从而迫使我再次开始吞咽。它让我发疯,几乎让我无法完成我的工作。
我已经看过有类似外观问题的人的stackoverflow,但不会占上风。我还发现了一些这样的文章:http://maximilianschmitt.me/posts/prevent-gulp-js-from-crashing-on-error/
但要么他们的解决方案已经过时,要么我太愚蠢无法正确使用他们的解决方案。最有可能是后者......
这是我的gulp.js文件:
var elixir = require('laravel-elixir');
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'
])
});
任何想法如何解决这个问题?
答案 0 :(得分:2)
问题
检测到错误时 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());
});
我做了什么:
$ npm install --save-dev gulp-plumber
gulp watch
将无法像以前那样在命令行中运行。gulp.watch()
定义为gulp,呃,看?.pipe(plumber());
。管道工是阻止gulp观察者因错误而崩溃的事情因此,为了方便您,请将以下代码粘贴到您的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
。注意:这是一个黑客攻击。不是很优雅。但它的确有效。根据这个帖子中的反对意见:https://github.com/gulpjs/gulp/issues/71 gulp v.4.x.x应该解决gulp watch在发现错误时崩溃的问题