J'ai fraîchement installé angular-cli 1.0.0.beta.17 (la plus récente), je lance un nouveau projet, capable de servir le projet sur le port 4200 sans aucun problème - il suffit d’appliquer des "applications standard"! message.
Cependant, lorsque j'essaie de générer pour la production cette application vide et générique à l'aide de la commande ng build --prod
Je n'ai pas créé de fichier principal. *. Js et j'ai quelques écrans d'avertissements tels que:
C'est un tout nouveau projet vide - je n'ai encore rien eu à casser ...
Comment construire la version de production?
Mis à jour pour Angular v6 +
# Prod - these are equivalent
ng build --configuration=production
ng build --c=production
ng build --prod=true
# Dev - and so are these
ng build --configuration=development
ng build --c=development
ng build --prod=false
ng build
Plus de paramètres de drapeau ici
Pour github wiki v2 + de Angular-cli, ce sont les moyens les plus courants pour lancer une version de développement et de production.
# Prod these are equivalent
ng build --target=production --environment=prod
ng build --prod --env=prod
ng build --prod
# Dev and so are these
ng build --target=development --environment=dev
ng build --dev --env=dev
ng build --dev
ng build
Il existe différents indicateurs par défaut qui affecteront les versions de --dev vs --prod.
Flag --dev --prod
--aot false true
--environment dev prod
--output-hashing media all
--sourcemaps true false
--extract-css false true
--prod
définit également les paramètres non marquables suivants:
.angular-cli.json
.process.env.NODE_ENV
dans les modules avec la valeur production
(nécessaire pour certaines bibliothèques, comme react).Je dois faire quelques dépannages pour que AOT fonctionne. Quand j'ai couru:
ng build --prod --aot = false
Je voudrais obtenir retournera une erreur similaire à
Module not found: Error: Can't resolve './$$_gendir/app/app.module.ngfactory'
À l’origine, j’avais dû refacturer un projet pour que AOT fonctionne. Cependant, ils peuvent être une solution si vous rencontrez cette erreur. Essayer
nPM i [email protected]
Essayez d’utiliser: ng build --target = production Cela devrait fonctionner.
Avec la version cli (1.0.1), utilisez:
ng build --prod
Cela vous donnera le dossier dist avec le fichier index.html et tout le fichier js fourni prêt pour la production.
essaye ça
ng build --env=prod
Le système de construction utilise par défaut l'environnement de développement qui utilise environment.ts
, mais si vous le faites ng build --env=prod
puis environment.prod.ts
sera utilisé à la place.
exemple de résultat si votre projet est nouveau angular cli app.
10% building mod3439ms building modules 1ms add01564ms 917ms asset45ms emittingHash: 9216e76d6f10637c945c
Version: webpack 2.1.0-beta.22
Time: 6358ms
Asset Size Chunks Chunk Names
main.bundle.js 2.6 MB 0, 2 [emitted] main
styles.bundle.js 10.2 kB 1, 2 [emitted] styles
inline.js 5.53 kB 2 [emitted] inline
main.map 2.61 MB 0, 2 [emitted] main
styles.map 14.2 kB 1, 2 [emitted] styles
inline.map 5.59 kB 2 [emitted] inline
index.html 482 bytes [emitted]
assets/.npmignore 0 bytes [emitted]
chunk {0} main.bundle.js, main.map (main) 2.06 MB {1} [initial] [rendered]
chunk {1} styles.bundle.js, styles.map (styles) 9.96 kB {2} [initial] [rendered]
chunk {2} inline.js, inline.map (inline) 0 bytes [entry] [rendered]
Child html-webpack-plugin for "index.html":
Asset Size Chunks Chunk Names
index.html 2.82 kB 0
chunk {0} index.html 350 bytes [entry] [rendered]
Fait et c'est sous/dist sauf si vous avez changé outDir
dans angular-cli.json
Si Aot est ou n'est pas implémenté.
Si Aot est implémenté:
ng build --prod
Si Aot n'est pas implémenté:
ng build --prod --aot=false
Vous devez mettre à jour la dernière version de angular-cli, TypeScript. Si vous utilisez la commande:
ng build --prod --aot=false
Votre projet compile la compilation JIT et doit fonctionner si vous utilisez angular-cli.
si vous voulez construire avec la commande
ng build --prod --aot=true
alors il s’agit d’une compilation AOT et vous devez mettre à jour le fichier main.ts dans:
import { enableProdMode } from '@angular/core';
import { platformBrowser } from '@angular/platform-browser';
import { AppModule } from './app/app.module';
import { environment } from './environments/environment';
if (environment.production) {
enableProdMode();
}
platformBrowser().bootstrapModuleFactory(AppModule);
Il y a beaucoup de commandes pour construire l'application angular en mode de production utilisant angular cli.
ng build --env = prod
Une fois que vous aurez exécuté cette commande, le dossier par défaut de cmd dist créera un répertoire contenant tous les fichiers minifiés liés à prod build, mais ne définira pas le chemin de base dans le fichier index.html. Pour changer dans index.html, allez soit et faites le changement manuel comme en ajoutant le (.) Ie.
<base href="./">
Vous pouvez également transmettre le paramètre lors de la création du code en mode prod à l'aide de la commande angular/CLI.
ng build --base-href=./ --env=prod
Il existe également d'autres commandes à construire, telles que le transfert de l'AOT et l'optimiseur de compilation (pour réduire la taille des ensembles).
ng build --prod --build-optimizer
Si vous souhaitez modifier le nom du dossier par défaut (dist) après la génération, vous pouvez modifier la valeur outDir dans le fichier .angular-cli.json.
Vous voulez l'AOT, ce qui est impliqué par l'utilisation du -prod
_ commutateur. Malheureusement, lorsque Angular CLI elle-même se brise, les messages d'erreur ne sont pas utiles. Voici comment j'ai résolu le problème:
npm install [email protected]
J'ai trouvé la solution très loin sur cette page: https://github.com/angular/angular-cli/issues/711
J'ai vu certaines personnes mentionner que la mise à jour de Angular de la CLI vers la version 1.2.6 au moins) résout également le problème, mais ne l'a pas encore testé.
Ce sont des avertissements uglify js provenant de votre code source Java-script ou des bibliothèques tierces que vous utilisez dans votre projet. Pour le moment, vous pouvez les ignorer.
L’équipe de cli angulaire travaille à la suppression de ce problème pour la construction de la génération https://github.com/angular/angular-cli/pull/1609