Il existe un didacticiel de démarrage rapide sur angular.io qui utilise du typecript et systemjs. Maintenant que j'ai ce miniapp en cours d'exécution, comment pourrais-je créer quelque chose de déployable? Je n'ai trouvé aucune information à ce sujet.
Ai-je besoin d'outils supplémentaires, de paramètres supplémentaires dans System.config?
(Je sais que je pourrais utiliser webpack et créer un seul bundle.js, mais j'aimerais utiliser systemjs tel qu'il est utilisé dans le tutoriel)
Quelqu'un pourrait-il partager son processus de construction avec cette configuration (Angular 2, TypeScript, systemjs)
typescript
angular
systemjs
Brian G. Bell
la source
la source
Réponses:
La chose clé à comprendre à ce niveau est qu'en utilisant la configuration suivante, vous ne pouvez pas concaténer directement les fichiers JS compilés.
Dans la configuration du compilateur TypeScript:
Dans le HTML
En fait, ces fichiers JS contiendront des modules anonymes. Un module anonyme est un fichier JS qui utilise
System.register
mais sans le nom du module comme premier paramètre. C'est ce que le compilateur dactylographié génère par défaut lorsque systemjs est configuré comme gestionnaire de module.Ainsi, pour avoir tous vos modules dans un seul fichier JS, vous devez exploiter la
outFile
propriété dans la configuration de votre compilateur TypeScript.Vous pouvez utiliser ce qui suit à l'intérieur de gulp pour ce faire:
Cela pourrait être combiné avec un autre traitement:
app.js
fichiervendor.js
fichier pour des bibliothèques tiercesboot.js
fichier pour importer le module qui amorce l'application. Ce fichier doit être inclus à la fin de la page (lorsque toute la page est chargée).index.html
pour prendre en compte ces deux fichiersLes dépendances suivantes sont utilisées dans les tâches gulp:
Ce qui suit est un exemple afin qu'il puisse être adapté.
Créer un
app.min.js
fichierCréer un
vendors.min.js
fichierCréer un
boot.min.js
fichierLe
config.prod.js
contient simplement les éléments suivants:Mettre à jour le
index.html
fichierLe
index.html
ressemble à ce qui suit:Notez que le
System.import('boot');
doit être effectué à la fin du corps pour attendre que tous les composants de votre application soient enregistrés à partir duapp.min.js
fichier.Je ne décris pas ici la manière de gérer la minification CSS et HTML.
la source
Vous pouvez utiliser la commande de construction angular2-cli
https://github.com/angular/angular-cli/wiki/build#bundling
Mettre à jour
Cette réponse a été soumise lorsque angular2 était dans rc4
J'avais essayé à nouveau sur angular-cli beta21 et angular2 ^ 2.1.0 et cela fonctionne comme prévu
Cette réponse nécessite l'initialisation de l'application avec angular-cli que vous pouvez utiliser
Ou sur un existant
Mise à jour 08/06/2018
Pour angulaire 6, la syntaxe est différente.
Consultez la documentation
la source
Vous pouvez créer un projet Angular 2 (2.0.0-rc.1) dans Typescript en utilisant SystemJS avec Gulp et SystemJS-Builder .
Vous trouverez ci-dessous une version simplifiée de la création, du regroupement et de la réduction de Tour of Heroes exécutant 2.0.0-rc.1 ( source complète , exemple en direct ).
gulpfile.js
system.config.js
la source
gulp <taskname>
où "taskname" est le nom de la tâche qui appelle le générateur SystemJS, dans mon exemple ci-dessusbundle:app
. Dans cette tâche Gulp, vous pouvez utiliser le module npm 'systemjs-builder' pour spécifier votre configuration système et votre tenue.Voici mon passe-partout MEA2N pour Angular 2: https://github.com/simonxca/mean2-boilerplate
C'est un simple passe-partout qui sert
tsc
à assembler les choses. (Utilise en fait grunt-ts , qui à la base n'est que latsc
commande.) Aucun Wekpack, etc. n'est nécessaire.Que vous utilisiez ou non grunt, l'idée est:
ts/
( par exemple:public/ts/
)tsc
pour refléter la structure dets/
répertoires de votre dossier dans unjs/
dossier et référencer uniquement les fichiers dujs/
dossier de votreindex.html
.Pour faire fonctionner grunt-ts (il devrait y avoir une commande équivalente pour plain tsc, Gulp, etc.), vous avez une propriété dans votre
tsconfig.json
appelé"outDir": "../js"
, et la référencez dans votregruntfile.js
avec:Ensuite, exécutez
grunt ts
, ce qui prendra votre applicationpublic/ts/
et la refléterapublic/js/
.Là. Super facile à comprendre. Pas la meilleure approche, mais une bonne pour commencer.
la source
Le moyen le plus simple que j'ai trouvé pour regrouper angular rc1 pour systemJs est d'utiliser
gulp
etsystemjs-builder
:Comme indiqué dans les commentaires, systemJs rencontre actuellement des problèmes lors du regroupement de composants à l'aide de
moduleId: module.id
https://github.com/angular/angular/issues/6131
La recommandation actuelle (angulaire 2 rc1) semble être d'utiliser des chemins explicites ie
moduleId: '/app/path/'
la source
@Component
décorateur.bundle.js
essaie de résoudre les chemins comme absolus même s'ils sont relatifs, provoquant des erreurs 404 (voir stackoverflow.com/questions/37497635/… ). Comment avez-vous géré cela?moduleId
le chemin relatif?moduleId: module.id
dans@Component
templateUrl
et va à l'encontre de l'objectif d'avoirmoduleId
en premier lieu. J'essaie d'utiliser les chemins relatifs comme recommandé ( angular.io/docs/ts/latest/cookbook/… )moduleId: '/app/components/home/'
J'ai utilisé expressjs sur le backend pour servir mon projet ng2. Vous pouvez le vérifier depuis ma page github: https://github.com/echonax/ng2-beta-and-test-framework
la source
Sous le site Web Angular.io, dans la section Avancé / Déploiement, il est recommandé que le moyen le plus simple de déployer soit de «copier l'environnement de développement sur le serveur».
passez par la section sous: Déploiement le plus simple possible. Les fichiers de projet finaux sont affichés dans la section code. Notez qu'il configure déjà le code pour charger les fichiers de package npm à partir du Web (au lieu du dossier local npm_modules).
assurez-vous qu'il fonctionne sur votre ordinateur local (démarrage npm). Ensuite, sous le dossier du projet, copiez tout ce qui se trouve sous le sous-dossier '/ src' dans le compartiment S3 que vous avez configuré. Vous pouvez utiliser le glisser-déposer pour copier, pendant ce processus, vous avez la possibilité de sélectionner le paramètre d'autorisation pour les fichiers, assurez-vous de les rendre `` lisibles '' par `` tout le monde ''.
sous l'onglet «Propriétés» du compartiment, recherchez le panneau «Hébergement de site Web statique», cochez l'option «Utiliser ce compartiment pour héberger le site Web» et spécifiez «index.html» à la fois pour le document d'index et le document d'erreur.
cliquez sur le site statique Endpoint, votre projet tourne bien!
la source