2015-09-18 2 views
6

Я создаю 3 свернутых пакета для моего приложения. У меня есть 2 задачи, чтобы сделать это, уменьшить и расслоить. Minify имеет зависимость от пакета. Если я запускаю minify, обе задачи выполняются без ошибок. Пакеты создаются, но мини-файлы - нет. Если я удалю зависимость от пакета, я могу запустить minify сам по себе, и миниатюрные файлы будут созданы успешно. Это заставляет меня думать, возможно, файлы используются, когда триггер задачи минимизации (поскольку пакет еще не закончен?). Как заставить его ждать, пока файлы будут полностью готовы? Могу ли я передать поток? Или, может быть, объединить их в одну задачу? Причина, по которой они в настоящее время не являются одной задачей, заключается в том, что они выводят 2 файла на пакет (unminified и minified bundle).Gulp bundle then 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); 
    }); 
} 

ответ

2

Задайте задачу minify тем же исходным файлам, что и в задаче связки. «concat» будет использоваться в обеих задачах. Таким образом, minify не зависит от результата задачи bundle.

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); 
    }); 
} 
Смежные вопросы