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