typescript - Hur skapar man en Angular2 ensam fil för plunker?
Jag använder en sådan plunker som en startpunkt för Angular2. Men den är extremt långsam. Främst eftersom den försöker transpile varje gång vid omladdning:
var angularVersion = '2.0.0-rc.4';
System.config({
baseUrl: '/',
paths: {
'npmcdn:*': 'https://npmcdn.com/*'
}
});
System.config({
transpiler: 'typescript',
typescriptOptions: { emitDecoratorMetadata: true },
meta: {
'*': {
deps: [ 'zone.js', 'reflect-metadata' ]
}
}
});
System.config({
packageConfigPaths: [
"npmcdn:@*/*/package.json"
],
map: {
'@angular/core': 'npmcdn:@angular/core@'+angularVersion,
'@angular/compiler': 'npmcdn:@angular/compiler@'+angularVersion,
'@angular/common': 'npmcdn:@angular/common@'+angularVersion,
'@angular/platform-browser': 'npmcdn:@angular/platform-browser@'+angularVersion,
'@angular/platform-browser-dynamic': 'npmcdn:@angular/platform-browser-dynamic@'+angularVersion,
'rxjs': 'npmcdn:[email ',
'zone.js': 'npmcdn:[email ',
'reflect-metadata': 'npmcdn:[email ',
"crypto": "@empty"
},
packages: {
'app': {
defaultExtension: 'ts',
main: './index.ts'
}
}
});
Jag funderar på idén att förkompilera en slags enkel filbundle med alla leverantörsdelar av Angular2 för att göra det snabbare och bara transpile din applikationskod men inte bibliotek.
Finns det redan en lösning för det?
Svar #1
Angular2 snabbstart använder aggregerad UMD-modul. Du bör titta på live-demot. Det ändrar SystemJS-konfigurationen för att ladda UMD-modulen istället för varje enskild fil. Här är den viktiga delen av filen.
ngPackageNames.forEach(function(pkgName) {
// Bundled (~40 requests):
packages['@angular/'+pkgName] = { main: '/bundles/' + pkgName + '.umd.js', defaultExtension: 'js' };
// Individual files (~300 requests):
//packages['@angular/'+pkgName] = { main: 'index.js', defaultExtension: 'js' };
});
