2015-01-20 17 views
5

Sto usando browserify così posso utilizzare i moduli npm nel mio codice di front end e gulp per eseguire le mie attività di compilazione. Questo funziona bene:Come posso ricevere una notifica degli errori durante il piping per ingurgitare browserify?

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

Tuttavia, se c'è un errore di sintassi nei miei JS, mi piacerebbe ricevere una notifica dell'errore tramite una notifica di OS X. Ho visto questo similar question e modificato il mio codice per aggiungere un .on('error'...) dopo il .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')) 

Tuttavia questo non notifica quando il mio JS è rotto. L'aggiunta di console.log() all'interno di on('error',...) non viene registrata. Sospetto perché quella domanda non riguarda l'uso di tubazioni.

Come posso ricevere una notifica degli errori durante il piping per ingurgitare browserify?

+2

Utilizzi browserify o il plugin gulp-browerify? Nel mio compito di browserify uso browserify e mi informa quando js ha degli errori. – alexmac

+0

@Alexander In realtà penso che tu abbia appena risposto alla domanda. Dal mio gulpfile: 'var browserify = require ('gulp-browserify')' che non è più mantenuto - consultare https://www.npmjs.com/package/gulp-browserify. La cosa giusta sembra essere quella di usare un altro pacchetto. Vuoi postarlo come risposta? – mikemaccana

risposta

6

Usa gulp-notify. Nota anche che dovresti usare il modulo browserify invece del deprecato modulo 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 come utilizzare browserify util in gulp compito.

Here un altro esempio di come utilizzare browserify e mostrare la notifica, quando js ha errori di sintassi.

3

Nel mio gulpfile, ho solo ascoltare per le eccezioni non gestite fanno e comunicare utilizzando 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); 
}); 

ho scoperto che un ritardo setTimeout era necessario per la notifica di presentarsi prima di uscire dal processo.

+0

Ack, attualmente sto usando 'gulp-notify' per il tag. Mi piacerebbe avere messaggi specifici (e diversi) per errori diversi - ad esempio, sass, vs errori di browserify. Grazie (e upmodded) però! – mikemaccana

0

utilizzare gulp-idraulico per tutto il mio errore di cattura:

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

si potrebbe anche essere necessario utilizzare gulp-streamify. Non penso che browserify supporti i flussi fuori dagli schemi. È passato un po 'di tempo da quando ho provato browserify con gulp quindi non sono sicuro che il mio frammento di codice funzionerà fuori dagli schemi, mi dispiace per quello.

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

Problemi correlati