Utilizzando systemjs-builder è possibile raggruppare Angular 2 con il codice dell'app e raggruppare le altre librerie separatamente.
Ho raggruppato qualsiasi libreria a cui fare riferimento direttamente in HTML in un vendors.min.js e qualsiasi libreria a cui fa riferimento tramite il mio system.config.js più il codice app in un app.min.js. In questo example puoi vedere che tutte le dipendenze in Tour of Heroes vengono caricate nella pagina in < 10 richieste di rete (source code).
// Bundle dependencies into vendors file
gulp.task('bundle:libs', function() {
return gulp.src([
'node_modules/jquery/dist/jquery.min.js',
'node_modules/bootstrap/dist/js/bootstrap.min.js',
'node_modules/semantic-ui/dist/semantic.min.js',
'node_modules/es6-shim/es6-shim.min.js',
'node_modules/es6-promise/dist/es6-promise.min.js',
'node_modules/systemjs/dist/system.src.js',
'system.config.js',
])
.pipe(concat('vendors.min.js'))
.pipe(uglify())
.pipe(gulp.dest('public/lib/js'));
});
// Compile TypeScript to JS
gulp.task('compile:ts', function() {
return gulp
.src([
"src/**/*.ts",
"typings/*.d.ts"
])
.pipe(sourcemaps.init())
.pipe(tsc({
"module": "system",
"moduleResolution": "node",
"outDir": "public/dist/js",
"target": "ES5"
}))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('public/dist'));
});
// Generate systemjs-based builds
gulp.task('bundle:js', function() {
var builder = new sysBuilder('public', './system.config.js');
return builder.buildStatic('app', 'public/dist/js/app.min.js');
});
// Minify JS bundle
gulp.task('minify:js', function() {
return gulp
.src('public/dist/js/app.min.js')
.pipe(uglify())
.pipe(gulp.dest('public/dist/js'));
});
gulp.task('scripts', ['compile:ts', 'bundle:js', 'minify:js']);
Interessante, potresti indicarmi il repository github di questo progetto? – Ajey
@Ajey Ecco il repository: https://github.com/smmorneau/tour-of-heroes – Steely
Perché utilizzare uglify e non utilizzare l'opzione systemjs minify passata a 'buildStatic'? – lbrahim