2015-01-20 3 views
5

Ich benutze browserify so kann ich npm-Module in meinem Front-End-Code verwenden, und Schluck, um meine Build-Aufgaben zu tun. Dies funktioniert gut:Wie kann ich über Fehler benachrichtigt werden, wenn Piping zu schlucken browserifizieren?

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

jedoch, wenn es in meinem JS ein Syntaxfehler ist, würde ich über eine OS X Meldung des Fehlers benachrichtigt werden. Ich habe diese similar question und modifizierte meinen Code gesehen ein .on('error'...) nach den .browserify() hinzuzufügen:

// 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')) 

jedoch dies nicht benachrichtigt werden, wenn mein JS gebrochen ist. Das Hinzufügen einer console.log() in on('error',...) wird nicht protokolliert. Ich vermute, weil diese Frage nicht die Verwendung von Schluckverrohrung beinhaltet.

Wie kann ich über Fehler benachrichtigt werden, wenn Piping zu schlucken browserifizieren?

+2

Verwenden Sie browserify util oder gulp-browerify plugin? In meiner Browser-Task benutze ich browserify util und es informiert mich, wenn js Fehler hat. – alexmac

+0

@Alexander Eigentlich denke ich, dass Sie gerade die Frage beantwortet haben. Aus meinem gulpfile: 'var browserify = require ('gulp-browserify')' welches nicht mehr gepflegt wird - siehe https://www.npmjs.com/package/gulp-browserify. Das Richtige scheint ein anderes Paket zu sein. Möchtest du das als Antwort posten? – mikemaccana

Antwort

6

Verwenden schluck-notify. Beachten Sie auch, dass Sie das Modul browserify anstelle des veralteten Moduls gulp-browerify verwenden sollten.

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 Beispiel, wie browserify util in gulp Aufgabe zu verwenden.

Here ein anderes Beispiel, wie browserify zu verwenden und Benachrichtigung anzuzeigen, wenn Js Syntaxfehler hat.

3

In meinem gulpfile, ich höre nur für nicht abgefangene Ausnahmen und benachrichtigen node-notifier mit:

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

fand ich, dass eine setTimeout Verzögerung notwendig war für die Benachrichtigung vor dem Beenden des Prozesses zu zeigen.

+0

Ack, ich benutze momentan 'gulp-notify' für das Tag. Ich möchte spezifische (und verschiedene) Nachrichten für verschiedene Fehler haben - zB sass, vs browserify Fehler. Danke (und upmodded) obwohl! – mikemaccana

0

ich schluck-Klempner für alle meine Fehler zu kontrollieren:

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

Sie könnten auch schluck-streamify verwenden. Ich glaube nicht, dass browserify Streams aus der Box unterstützt. Es ist schon einige Zeit her, seit ich versucht habe, mit Schluck zu browserifizieren, also bin ich mir nicht sicher, ob mein Code-Snippet aus der Box funktioniert, tut mir leid.

https://github.com/nfroidure/gulp-streamify

Verwandte Themen