2015-09-18 12 views
6

Tworzę 3 minified pakiety dla mojej aplikacji. Mam 2 zadania, aby to zrobić, minify i pakunek. Minify ma zależność od pakietu. Jeśli uruchomię minify, oba zadania będą działać bez błędów. Pakiety są tworzone, ale zminimalizowane pliki nie są. Jeśli usunę zależność od pakunku, będę mógł uruchomić minify samodzielnie, a minified pliki zostaną pomyślnie utworzone. To prowadzi mnie do przekonania, że ​​pliki mogą być używane, gdy zadanie minify zostanie uruchomione (ponieważ pakiet się nie zakończył?). Jak sprawić, by poczekał, aż pliki będą w pełni gotowe? Czy mogę przekazać strumień? A może połączyć je w jedno zadanie? Powodem, dla którego nie są one obecnie jednym zadaniem, jest to, że generują 2 pliki na pakiet (pakiet niesklasyfikowany i minified).Pakiet Gulp następnie minify

var outFolder = __dirname + '\\Scripts\\dist'; 
var appBundles = [ 
    { scripts: ['Scripts/Common/**/*.js'], output: 'eStore.common.js' }, 
    { scripts: ['Scripts/Checkout/**/*.js'], output: 'eStore.checkout.js' }, 
    { scripts: ['Scripts/ProductDetail/**/*.js'], output: 'eStore.product.js' } 
]; 

gulp.task('bundle', bundle); 
gulp.task('minify', ['bundle'], minify); // this one doesn't work 
gulp.task('minifyOnly', minify);   // this one works 

function bundle() { 
    appBundles.forEach(function (appBundle) { 
     gulp.src(appBundle.scripts) 
      .pipe(concat(appBundle.output)) 
      .pipe(sourcemaps.init()) 
      .pipe(sourcemaps.write(outFolder + '\\maps')) 
      .pipe(gulp.dest(outFolder)) 
      .on('error', errorHandler); 
    }); 
} 

function minify() { 
    appBundles.forEach(function(appBundle) { 
     var bundleSrc = outFolder + '\\' + appBundle.output; 
     gulp.src(bundleSrc) 
      .pipe(rename({ extname: '.min.js' })) 
      .pipe(uglify()) 
      .pipe(gulp.dest(outFolder)) 
      .on('error', errorHandler); 
    }); 
} 

Odpowiedz

2

Zadania minify używają tych samych plików źródłowych, których używa zadanie pakietu. "concat" będzie używany w obu zadaniach. W ten sposób minify nie ma zależności od wyjścia z zadania pakowania.

function minify() { 
    appBundles.forEach(function (appBundle) { 
     console.log('Creating minified bundle for: ' + appBundle.output); 
     gulp.src(appBundle.scripts) 
      .pipe(concat(appBundle.output)) 
      .pipe(rename({ extname: '.min.js' })) 
      .pipe(uglify()) 
      .pipe(gulp.dest(outFolder)) 
      .on('error', errorHandler); 
    }); 
} 

function bundle() { 
    appBundles.forEach(function (appBundle) { 
     console.log('Creating bundle and sourcemaps: ' + appBundle.output); 
     gulp.src(appBundle.scripts) 
      .pipe(concat(appBundle.output)) 
      .pipe(sourcemaps.init()) 
      .pipe(sourcemaps.write(outFolder + '\\maps')) 
      .pipe(gulp.dest(outFolder)) 
      .on('error', errorHandler); 
    }); 
}