2015-12-09 33 views
7

Con questo compito:log degli errori standard in Gulp Browserify

gulp.task("es6", function() { 
     return browserify({entries: 'src/main/es6/main.js', extensions: ['.js'], debug: true}) 
     .transform(babelify) 
     .bundle() 
     .pipe(source('superpos.js')) 
     .pipe(streamify(uglify())) 
     .pipe(gulp.dest('src/main/webapp')); 
}); 

ottengo questo tipo di log degli errori:

enter image description here

E 'chiaro e carina, mi piace.

Ma al fine di mantenere il mio orologio in esecuzione, ho bisogno di gestire l'errore, invece di farlo passare, qualcosa di simile a

... 
    .transform(babelify) 
    .bundle() 
    .on('error', function(error){ 
     // pretty error print 
     this.emit('end'); 
    }) 
    ... 

Come posso riprodurre la stessa log degli errori qui?

Preferisco evitare la riproduzione dolorosa combinando gesso, gutil e lettura del file errorring, ma in qualche modo utilizzare la stessa funzione.

+0

Se non sbaglio l'utilizzo di "watchify" invece del Gulp watcher dovrebbe essere sufficiente. Otterrai gli stessi errori, ma watchify sottomette il processo kill – ddprrt

+0

@ddprrt Ho provato con watchify, l'orologio continua a funzionare ma non c'è registro. Potrei aver perso qualcosa, puoi rispondere con un esempio di registrazione? –

risposta

2

Si scopre che browserify utilizza syntax-error module e quindi genera ricchi oggetti di errore contenenti una proprietà codeFrame predisposta per console.

posso intercettare l'errore come questo:

gulp.task("es6", function() { 
     return browserify({entries: 'src/main/es6/main.js', extensions: ['.js'], debug: true}) 
     .transform(babelify) 
     .bundle() 
     .on('error', function(err){ 
      if (err instanceof SyntaxError) { 
        gutil.log(gutil.colors.red('Syntax Error')); 
        console.log(err.message); 
        // console.log(err.filename+":"+err.loc.line); 
        console.log(err.codeFrame); 
      } else { 
        gutil.log(gutil.colors.red('Error'), err.message); 
      } 
      this.emit('end'); 
     }) 
     .pipe(source('superpos.js')) 
     .pipe(streamify(uglify())) 
     .pipe(gulp.dest('src/main/webapp')); 
}); 

dove gutil è gulp-util

per questo risultato:

enter image description here