2015-09-18 8 views
6

を縮小化。私は、これを行うための2つのタスクを持っています。 Minifyはバンドルに依存します。 minifyを実行すると、両方のタスクがエラーなしで実行されます。バンドルは作成されますが、縮小されたファイルは作成されません。バンドルへの依存関係を削除すると、minifyを単独で実行することができ、縮小されたファイルが正常に作成されます。これは、(バンドルが終了していないために)minifyタスクがトリガされたときに、ファイルが使用されている可能性があると考えています。ファイルが完全に準備完了するまで、どのように待機させるのですか?ストリームを渡すことはできますか?あるいは、これらを単一のタスクに組み合わせることができますか?彼らが現在1つのタスクではない理由は、バンドルごとに2つのファイルを出力するためです(未対応のバンドルと縮小バンドル)。ガルプバンドルはその後、私は自分のアプリケーションのための3つの縮小さバンドルを作成してい

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はバンドル・タスクからの出力に依存しません。

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); 
    }); 
} 
関連する問題