Lau*_*eld 21 node.js browserify gulp
我正在使用gulp + browserify来构建和打包我的javascript库.现在有一件事困扰着我:我正在通过gulp运行一个带有livereload的简单服务器进行开发.这工作正常,但每当我的javascript包含语法错误时,browserify会抛出一个错误导致服务器停止.
我使用的browserify代码(注意我添加了一个错误处理程序):
browserify("./src/main.js")
.bundle({standalone: "SomeName", debug: false}).on('error', notify.onError({
message: "Error: <%= error.message %>",
title: "Failed running browserify"
})
);
Run Code Online (Sandbox Code Playgroud)
现在出现了一个有趣的部分:当我删除独立设置(并且我的js语法不正确)时,错误处理程序将触发.但是,当我使用此独立设置时,错误处理程序不会触发(导致服务器通过gulp停止启动)
有人知道如何处理这个问题吗?我总是可以在gulp中手动验证我的js文件,但是我想避免这种解决方法
tmt*_*txt 59
该on('error')事件仍然被解雇.但是,browserify流与其他Gulp流有点不同.在browserify的错误处理函数中,您需要显式调用this.emit("end")
一个示例gulp任务
var browserify = require('browserify');
var gulp = require('gulp');
var source = require("vinyl-source-stream");
var reactify = require('reactify');
gulp.task('browserify', function(){
// create new bundle
var b = browserify();
// add transform if you want
b.transform(reactify);
// add file to browserify
b.add("./src/main.js");
// start bundling
return b.bundle()
.on('error', function(err){
// print the error (can replace with gulp-util)
console.log(err.message);
// end this stream
this.emit('end');
})
.pipe(source('main.js'))
// pipe other plugin here if you want
.pipe(gulp.dest('./dist'));
});
Run Code Online (Sandbox Code Playgroud)
错误函数处理程序阻止gulp崩溃,this.emit("end")停止当前流,不让它运行到下一个管道.事件处理程序还可以捕获转换插件中的错误.
有关详细信息,请参阅http://truongtx.me/2014/07/15/handle-errors-while-using-gulp-watch/