1

所以我很喜欢灵药。

但是当我运行 gulp watch 并编写 css(准确地说是 scss)时,它会在几次保存后崩溃,从而迫使我再次启动 gulp watch。它让我发疯,几乎到了我无法完成工作的地步。

我已经看过 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'
    ])
});

任何想法如何解决这一问题?

4

1 回答 1

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());
});

我做了什么:

  1. 我安装了 gulp 管道工$ npm install --save-dev gulp-plumber
  2. 我需要 gulp 管道工和我的 gulp 文件的基本 gulp 依赖项
  3. 我定义了一个空的默认任务,否则 gulp 不会和我一起玩......
  4. 我创建了一个名为“watch”的 gulp 任务,否则gulp watch无法像以前那样在命令行中工作。
  5. 我定义了gulp.watch()使 gulp,嗯,看?
  6. .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 工作正常。

错误: 吞咽错误

抓到!!!

  1. 跑步gulp现在什么都不做。
  2. 如果您犯了语法错误,则观察者将停止,直到您修复错误为止。但是,您不必手动重新启动它。说,如果你错过了 ; 在您的 scss 中,只要添加 ; 它就会再次工作 并保存。

注意:这是一个黑客。不是很优雅。但它有效。根据此线程中的 contra:https ://github.com/gulpjs/gulp/issues/71 gulp v.4.xx 应该解决 gulp watch 在发现错误时崩溃的问题

于 2015-05-14T12:53:14.557 回答