2015-09-18 22 views
6

Tôi đang tạo 3 gói nhỏ gọn cho ứng dụng của mình. Tôi có 2 nhiệm vụ để thực hiện việc này, rút ​​gọn và đóng gói. Minify có sự phụ thuộc vào gói. Nếu tôi chạy minify, cả hai nhiệm vụ đều chạy không có lỗi. Các gói được tạo nhưng các tệp được rút gọn thì không. Nếu tôi loại bỏ sự phụ thuộc vào gói, sau đó tôi có thể chạy tự rút gọn và các tệp được rút gọn được tạo thành công. Điều này khiến tôi tin rằng có thể các tệp đang được sử dụng khi tác vụ rút gọn kích hoạt (vì gói chưa hoàn thành?). Làm cách nào để tôi chờ cho đến khi các tệp hoàn toàn sẵn sàng? Tôi có thể chuyển luồng không? Hoặc có thể kết hợp chúng thành một công việc duy nhất? Lý do họ hiện không phải là một nhiệm vụ duy nhất là vì chúng xuất ra 2 tệp cho mỗi gói (một gói chưa được tối ưu hóa và được rút gọn).Gói Gulp sau đó rút gọn

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

Trả lời

2

Sử dụng cùng một tệp nguồn mà tác vụ bó sử dụng. 'concat' sẽ được sử dụng trong cả hai tác vụ. Bằng cách này, việc rút gọn không có sự phụ thuộc vào đầu ra từ nhiệm vụ bó.

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); 
    }); 
} 
Các vấn đề liên quan