在laravel 5中使用长生不老药时,如何防止gulp手表崩溃(例如停止观看)?

时间:2015-05-14 12:53:15

标签: laravel-5 gulp gulp-watch laravel-elixir

所以我非常喜欢灵药。

但是当我运行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'
    ])
});

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

1 个答案:

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

我做了什么:

  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观察者因错误而崩溃的事情
  7. 因此,为了方便您,请将以下代码粘贴到您的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 error

    <强>渔获!!!

    1. 现在正在运行gulp
    2. 如果您出现语法错误,观察程序将停止,直到您修复错误。但是,您不必手动重新启动它。说,如果你错过了;在你的scss中,一旦你添加了它,它就会再次运行;并保存。
    3. 注意:这是一个黑客攻击。不是很优雅。但它的确有效。根据这个帖子中的反对意见:https://github.com/gulpjs/gulp/issues/71 gulp v.4.x.x应该解决gulp watch在发现错误时崩溃的问题

相关问题