当管道传输到 gulp browserify 时,如何获得错误通知?
How can I get notified of errors during when piping to gulp browserify?
我正在使用 browserify 所以我可以在我的前端代码中使用 npm 模块,gulp 来做我的构建任务。这很好用:
var browserify = require('gulp-browserify');
gulp.task('js', ['clean'], function() {
gulp
.src('./public/js/src/index.js')
.pipe(browserify({
insertGlobals : true,
debug : ! gulp.env.production
}))
.pipe(gulp.dest('./public/js/dist'))
});
但是,如果我的 JS 中存在语法错误,我希望通过 OS X 通知收到错误通知。我已经看到这个 similar question 并修改了我的代码以在 .browserify()
:
之后添加一个 .on('error'...)
// Browserify/bundle the JS.
gulp
.src('./public/js/src/index.js')
.pipe(browserify({
insertGlobals : true,
debug : ! gulp.env.production
}).on('error', function(err){
notify.onError({
message: "Error: <%= error.message %>",
title: "Failed running browserify"
}
this.emit('end');
})
.pipe(gulp.dest('./public/js/dist'))
然而,当我的 JS 损坏时,这不会通知。在 on('error',...)
中添加 console.log() 也不会记录。我怀疑是因为这个问题不涉及使用 gulp 管道。
当管道连接到 gulp browserify 时,如何获得错误通知?
在我的 gulpfile 中,我只监听未捕获的异常并使用 node-notifier:
通知
var Notifier = require('node-notifier');
notifier = new Notifier();
process.on('uncaughtException', function(err) {
notifier.notify({title: 'error', message: 'gulp process has crashed'});
setTimeout(function() {
console.error(err);
process.exit(1);
}, 1000);
});
我发现在退出进程之前需要 setTimeout
延迟才能显示通知。
我使用 gulp-水管工来捕获所有错误:
gulp.task('browserify', function(){
return browserify('./assets/js/src/app.js')
.pipe(plugins.plumber())
.pipe(gulp.dest('./assets/js'))
.pipe(plugins.notify({message: "browserify complete"}))
});
https://www.npmjs.com/package/gulp-plumber
您可能还需要使用 gulp-streamify。我认为 browserify 不支持开箱即用的流。自从我尝试使用 gulp 进行 browserify 以来已经有一段时间了,所以我不确定我的代码片段是否可以开箱即用,对此感到抱歉。
使用gulp-通知。另请注意,您应该使用 browserify module instead of the deprecated gulp-browerify 模块。
var browserify = require('browserify'),
brfs = require('brfs'),
watchify = require('watchify'),
notify = require("gulp-notify");
var bundler = watchify(browserify({
basedir: "./public/js/src"
}));
// Browserify our code
gulp.task('js', ['clean'], function() {
// Browserify/bundle the JS.
return bundler.bundle()
// log errors if they happen
.on('error', function(err) {
return notify().write(err);
})
.pipe(source('index.js'))
.pipe(gulp.dest('public/js/dist'));
});
Here 如何在 gulp
任务中使用 browserify
实用程序的示例。
Here 另一个示例如何使用 browserify
并在 js 有语法错误时显示通知。
我正在使用 browserify 所以我可以在我的前端代码中使用 npm 模块,gulp 来做我的构建任务。这很好用:
var browserify = require('gulp-browserify');
gulp.task('js', ['clean'], function() {
gulp
.src('./public/js/src/index.js')
.pipe(browserify({
insertGlobals : true,
debug : ! gulp.env.production
}))
.pipe(gulp.dest('./public/js/dist'))
});
但是,如果我的 JS 中存在语法错误,我希望通过 OS X 通知收到错误通知。我已经看到这个 similar question 并修改了我的代码以在 .browserify()
:
.on('error'...)
// Browserify/bundle the JS.
gulp
.src('./public/js/src/index.js')
.pipe(browserify({
insertGlobals : true,
debug : ! gulp.env.production
}).on('error', function(err){
notify.onError({
message: "Error: <%= error.message %>",
title: "Failed running browserify"
}
this.emit('end');
})
.pipe(gulp.dest('./public/js/dist'))
然而,当我的 JS 损坏时,这不会通知。在 on('error',...)
中添加 console.log() 也不会记录。我怀疑是因为这个问题不涉及使用 gulp 管道。
当管道连接到 gulp browserify 时,如何获得错误通知?
在我的 gulpfile 中,我只监听未捕获的异常并使用 node-notifier:
通知var Notifier = require('node-notifier');
notifier = new Notifier();
process.on('uncaughtException', function(err) {
notifier.notify({title: 'error', message: 'gulp process has crashed'});
setTimeout(function() {
console.error(err);
process.exit(1);
}, 1000);
});
我发现在退出进程之前需要 setTimeout
延迟才能显示通知。
我使用 gulp-水管工来捕获所有错误:
gulp.task('browserify', function(){
return browserify('./assets/js/src/app.js')
.pipe(plugins.plumber())
.pipe(gulp.dest('./assets/js'))
.pipe(plugins.notify({message: "browserify complete"}))
});
https://www.npmjs.com/package/gulp-plumber
您可能还需要使用 gulp-streamify。我认为 browserify 不支持开箱即用的流。自从我尝试使用 gulp 进行 browserify 以来已经有一段时间了,所以我不确定我的代码片段是否可以开箱即用,对此感到抱歉。
使用gulp-通知。另请注意,您应该使用 browserify module instead of the deprecated gulp-browerify 模块。
var browserify = require('browserify'),
brfs = require('brfs'),
watchify = require('watchify'),
notify = require("gulp-notify");
var bundler = watchify(browserify({
basedir: "./public/js/src"
}));
// Browserify our code
gulp.task('js', ['clean'], function() {
// Browserify/bundle the JS.
return bundler.bundle()
// log errors if they happen
.on('error', function(err) {
return notify().write(err);
})
.pipe(source('index.js'))
.pipe(gulp.dest('public/js/dist'));
});
Here 如何在 gulp
任务中使用 browserify
实用程序的示例。
Here 另一个示例如何使用 browserify
并在 js 有语法错误时显示通知。