2017-04-16 59 views
0

我試圖得到一個單一的vendor.min.js,以減少被加載的外部文件的數量和這樣做,我有以下一飲而盡任務:壓縮供應商的JS庫

gulp.task('vendor-bundle', function() { 
    gulp.src([ 
       'core-js/client/shim.min.js', 
      'systemjs/dist/system-polyfills.js', 
      'systemjs/dist/system.src.js', 
      'reflect-metadata/Reflect.js', 
      'rxjs/**/*.js', 
      'zone.js/dist/zone.js', 
      '@angular/**/bundles/*.umd.js', 
      '@ng-bootstrap/**/bundles/ng-bootstrap.js', 
      'jquery/dist/jquery.min.js', 
      'bootstrap/dist/js/*.js', 
      'tether/dist/**/tether.min.js', 
    ],{cwd: "node_modules/**"}) 
    .pipe(concat('vendors.min.js')) 
    .pipe(uglify()) 
    .pipe(gulp.dest('dist')); 
}); 

當我再嘗試運行我的Angular 2應用程序出現以下錯誤:

Uncaught SyntaxError: Identifier 'window' has already been declared 
    at vendors.min.js:1 
(anonymous) @ vendors.min.js:1 
app.js:1 Uncaught ReferenceError: define is not defined 
    at app.js:1 
(anonymous) @ app.js:1 

我假設這是因爲所有組合在一起的單個文件都可能導致定義衝突?我在我的app.js中得到另一個錯誤,我認爲這是因爲vendors.min.js由於我得到的錯誤而未能加載。有沒有辦法刪除重複的定義或更好的方法來將供應商文件連接成一個單一的文件來減少要獲取的資源?

回答

0

刪除此行有重複的變量

.pipe(concat('vendors.min.js')) 
+0

你得到所有的JS文件捆綁成一個單一的js文件,如果這是可能的怎麼樣呢? –

+0

所有js文件都與webpack捆綁在一起。 –

+0

沒錯 - 我現在正在嘗試!謝謝您的幫助 –