2017-01-24 3 views
1

Ich habe die Babelify-Transformation hinzugefügt und ich habe festgestellt, dass meine MainScripts-Aufgabe nun etwa 10 Sekunden statt 0,5 s wie zuvor dauert.Bedingt laufende Transformation auf browserify

Ich möchte daher .transform ("babelify", {Voreinstellungen: ["es2015"]}) nur wenn die Umgebung ist oder prod, um die Aufgabe während der Entwicklung zu beschleunigen.

Meine Funktion für die aktuelle Umgebung Bestimmung

var isLocal = function() { 
    return argv.env === 'localdev' || argv.env === 'dev'; 
}; 

Meine Skripte Aufgabe:

gulp.task('mainScripts', function() { 
     return browserify('./app/app.js', { 
      debug: true 
     }) 
     .transform("babelify", {presets: ["es2015"]}) 
     .bundle() 
     .on('error', function(err) { 
      console.log(err.toString()); 
      this.emit("end"); 
     }) 
     .pipe(source('main.js')) 
     .pipe(buffer()) 
     .pipe(gulpif(!condition, sourcemaps.init({ 
      loadMaps: true 
     }))) 
     .pipe(ngAnnotate()) 
     .pipe(gulpif(!condition, uglify({ 
      mangle: true 
     }).on('error', gutil.log))) 
     .pipe(gulpif(!condition, sourcemaps.write('./'))) 
     .pipe(gulp.dest('./dist/js/')). 
     pipe(gulpif(isLocal(), connect.reload())); 
    }); 

Wie dies erreicht werden kann?

Antwort

0

Der Aufruf von browserify gibt den Bündler und die transform Anruf wird nur angekettet aus, dass, so dass Sie gegebenenfalls transform, indem Sie so etwas wie dies nennen kann:

gulp.task('mainScripts', function() { 
    var bundler = browserify('./app/app.js', { 
    debug: true 
    }); 
    if (!isLocal()) { 
    bundler = bundler.transform("babelify", { presets: ["es2015"] }); 
    } 
    return bundler 
    .bundle() 
    .on('error', function(err) { 
     ... 
    } 
    ... 

Alternativ können Sie einen Blick für einige Schluck haben Rezepte für watchify, die Ihre inkrementellen Build-Zeiten erheblich verbessern sollten.