2014-02-25 24 views
2

我正在使用gulp-notify插件。这是我如何在gulpfile.js中实现它的一个例子(你可以看到我也使用了gutil和livereload,我不知道他们是否有任何影响因素,但是如果他们这样做,请告诉我。)如何防止gulp-notify在Windows中破坏gulp-watch?

gulp.task('js', function() { 
    return gulp.src('./dev/scripts/*.coffee') 
    .pipe(coffee({bare: true}).on('error', gutil.log)) 
    .pipe(gulp.dest('./build/js')) 
    .pipe(notify('Coffeescript compile successful')) 
    .pipe(livereload(server)); 
}); 

此插件适用于OS X和Linux。在没有通知功能的Windows上,它会返回一个错误并打破gulp-watch插件。这是我已经吞下手表设置的例子:

gulp.task('watch', function() { 
    server.listen(35729, function (err) { 
    if (err) { 
     return console.log(err); 
    } 
    gulp.watch('./dev/scripts/*.coffee',['js']); 
    }); 
}); 

所以,我的文档中读取一饮而尽管插件可以帮助在Windows上时,我不会打破一饮而尽手表,但我无法找到我如何在像这样的设置中使用它的例子。

+1

现在一饮而尽,通知静静地失败,与选项,如果你以抓住错误选择。请参阅选项emitError(https://github.com/mikaelbr/gulp-notify#optionsemiterror) – mikaelb

回答

7

您可以结合使用the gulp-if pluginos node module来确定,如果你是在Windows上,然后排除gulp-notify,就像这样:

var _if = require('gulp-if'); 

//... 

// From http://stackoverflow.com/questions/8683895/variable-to-detect-operating-system-in-node-scripts 
var isWindows = /^win/.test(require('os').platform()); 

//... 

    // use like so: 
    .pipe(_if(!isWindows, notify('Coffeescript compile successful'))) 
+0

注意:对Windows的测试是[从这里](http://stackoverflow.com/questions/8683895/variable-to-detect -operating-system-in-node-scripts),但我无法确认它的工作原理。 – OverZealous

+0

谢谢。我没有提到我已经尝试了这种方法,如果不成功的话。如果有其他人可以尝试并使其工作,请告诉我。我可能做错了什么。 – harrypujols

+0

对不起,这不是我可以轻易测试的东西。如果你正在使用'gulp-if',看起来不应该调用通知程序,所以你不应该看到错误。你能编辑你的原始问题以包含确切的错误信息吗? – OverZealous