5

私は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 通知を介してエラーを通知してもらいたいと考えています。この同様の質問を見て、コードを変更して、の.on('error'...)後にを追加しました.browserify()

// 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 が壊れているときに通知しません。内部に console.log() を追加on('error',...)してもログに記録されません。その質問にはgulp配管の使用が含まれていないため、私は疑っています。

gulp browserify へのパイプ中にエラーの通知を受け取るにはどうすればよいですか?

4

3 に答える 3

6

gulp-notifyを使用します。非推奨の gulp-browerifyモジュールの代わりにbrowserifyモジュールを使用する必要があることにも注意してください。

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

ここでbrowserifyは、タスクで utilを使用する方法の例を示しgulpます。

browserifyjs に構文エラーがある場合に通知を使用して表示する別の例を次に示します。

于 2015-01-21T16:15:42.637 に答える
3

私の 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プロセスを終了する前に通知が表示されるには、遅延が必要であることがわかりました。

于 2015-01-20T19:44:36.470 に答える