commonjs - Hur kompilerar man en Angular2 TypeScript-applikation till en enda fil?
Jag inser att jag kan kompilera min applikation med tsc my_app.ts --target system och det kommer att generera en SystemJS-inkapslad fil för varje importerat modul, vilket är fantastiskt, men det genererar anonyma (namnlösa) funktioner, så jag kan inte bara sammanfoga dem till en enda fil.
Jag tänkte på att göra den här frågan till "hur man kompilerar TypeScript till namngivna SystemJS-moduler", men mitt mål är bara att kompilera min Angular2-app till en enda fil, oavsett om det är SystemJS eller inte.
Svar #1
Alternativet --outFile fungerar med --module-alternativet (för AMD och SystemJS) sedan TypeScript 1.8, så detta kan göras nativt. Här är ändringsloggen. TypeScript hämtar också automatiskt alla beroenden som inte finns i externa moduler, så det räcker att bara kompilera huvudappfilen.
Om Angular 2 inte byter från SystemJS, bör sättet att paketera din app i en enda fil vara lika enkelt som att kompilera den med alternativ som tsc app.ts --target ES5 --module system --experimentalDecorators --moduleResolution node --emitDecoratorMetadata --outFile app.js
Efter det bör det vara möjligt att starta applikationen med något som:
<script src="/bower_components/system.js/dist/system-register-only.js"></script>
<script src="/node_modules/angular2/bundles/angular2.dev.js"></script>
<script src="/app.js"></script>
<script>
System.import('app');
</script>
Svar #2
För webben:
- Använd TypeScript-kompilatorn för att kompilera till JavaScript.
- Använd browserify på JavaScript för att kombinera det till en enda fil.
Ett enklare sätt att göra detta är dock att använda tsify. Det är ett browserify-plugin som kompilerar TypeScript.
