压缩供应商JS库

时间:2017-04-16 15:08:48

标签: javascript angular gulp

我试图获得一个vendor.min.js来减少要加载的外部文件的数量,并且这样做我有以下gulp任务:

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中出现了另一个错误,我认为这是因为vendor.min.js由于我得到的错误而无法加载。有没有办法删除重复的定义或更好的方法将供应商文件连接成一个,以减少要获取的资源?

1 个答案:

答案 0 :(得分:0)

删除此行,它有重复的变量

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