然后Gulp捆绑缩小

我正在为我的应用程序创建3个缩小的包.我有两个任务要做,缩小和捆绑. Minify依赖于bundle.如果我运行minify,两个任务都会运行而没有错误.捆绑包已创建,但缩小的文件不是.如果我删除对bundle的依赖,那么我可以自己运行minify并成功创建缩小的文件.这让我相信当minify任务触发时可能正在使用文件(因为bundle还没有完成?).如何使其等待文件完全准备好?我可以通过这条小溪吗?或者将这些组合成一个任务?它们目前不是单个任务的原因是因为它们每个捆绑包输出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);
    });
}

解决方法

让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);
    });
}

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...