web-dev-qa-db-fra.com

activer le mode de production dans angular 2

Je crée une application Web avec Angular 2 et Firebase, Je souhaite activer le mode de production.

main.ts

if (environment.production) {
  enableProdMode();
}

environnement.ts

export const environment = {
  production: true
};

environment.prod.ts

export const environment = {
  production: true
};

Ensuite, j'essaie de construire --prod; Servir, mais ne fonctionne toujours pas.

Merci d'avance.

5
naruto

ng build --prod créera des artefacts de construction dans le dossier /dist - vous devez placer ces fichiers sur un serveur Web différent (c'est-à-dire que vous n'utilisez pas ng serve après cela)

Si vous souhaitez simplement exécuter votre application à l'aide de ng serve mais en mode de production, , Utilisez:

ng serve --prod

Modifier

Je ne semble pas bien expliquer cela. Votre demande consiste à "activer le mode de production". Vous avez deux façons de le faire, selon ce que vous essayez de faire.

Si vous souhaitez utiliser le serveur de développement angular-cli pour exécuter votre application en mode production afin de vérifier si ce dernier fonctionne correctement, utilisez:

ng serve --prod

Si, toutefois, vous êtes prêt à déployer votre application sur un serveur Web de production, le processus se déroule en deux étapes:

  1. générer la version prête à la production de votre application à l'aide de: ng build --prod

  2. copiez la sortie du dossier /dist sur votre serveur Web de production

Notez que je ne fais pas les deux. J'utilise soit ng build, soit ng serve, en fonction de ce que j'essaie d'accomplir.

5
snorkpete

Vous devriez réessayer avec ng run build --prod ou npm run buildas moi, dans mon fichier package.json, le script de paramétrage est comme ça 

"scripts":{
 "ng": "ng",
 "publish": "ng build --prod",
 "start": "ng serve --Host 0.0.0.0 --port 4200",
 "hmr": "ng serve --Host 0.0.0.0 --port 4200 4201 --hmr -e=hmr",
 "test": "ng test",
 "pree2e": "webdriver-manager update --standalone false --gecko false",
 "e2e": "protractor"},..

et alors oui, quand je veux construire (publier) mon projet angulaire, j'ai utilisé la commande npm run publish . Si vous voulez changer "build" au lieu de "publish", vous devez utiliser comme "npm run build" 

1
Ko Pauk

J'ai observé cela dans angular-cli 1.0.0-beta.28.3. dist disparaît le ng-serve. Si vous voulez conserver la construction, essayez ng build --output-path=last-build/ et jetez un coup d'œil à ce problème .

Mais le fait est que vous n'avez pas besoin de faire un ng serve --prod après avoir créé le build. Comme @snorkpete le dit, veuillez copier le dossier dist après avoir créé le build sur votre serveur Web. Et votre serveur Web se chargera de l'exécution de l'application. Remeber, you will have to create a virtual Host for this. Mais si vous voulez simplement l'exécuter sur votre ordinateur local et que vous voulez le webpack live, il suffit de faire ng serve --prod, un live webpack n'a rien à voir avec le dist que vous avez.

0
xyz

ng servir --prod n'a pas fonctionné pour moi.

Cela a fonctionné d'ailleurs :)

ng serve --configuration=production

il crée un serveur de production de test qui fonctionne de la même manière que sur le serveur déployé. J'ai essayé ce test avec environment.js (toutes les autres solutions n'ont pas fonctionné pour moi)

Vous pouvez suivre cet (Devenir un Angular Environmentalist) pour en savoir plus sur Angular environnements

0
Kavinda Jayakody