Comment activer le mode production?


182

Je lisais des questions connexes et j'ai trouvé celle-ci , mais ma question est de savoir comment passer du mode développement au mode production. Il existe quelques différences entre les modes qui sont indiqués ici .

Dans la console, je peux voir ....Call enableProdMode() to enable the production mode.Cependant, je ne suis pas sûr de quel type dois-je appeler cette méthode.

Quelqu'un peut-il répondre à cette question?


Je l'ai trouvé fou en passant la configuration à l'aide de Webpack 2+ Angular2 et Typescript, j'ai créé une solution simple: github.com/Sweetog/yet-another-angular2-boilerplate
Brian Ogden

Réponses:


212

Vous l'activez en important et en exécutant la fonction (avant d'appeler bootstrap):

import {enableProdMode} from '@angular/core';

enableProdMode();
bootstrap(....);

Mais cette erreur indique que quelque chose ne va pas avec vos liaisons, vous ne devriez donc pas simplement l'ignorer, mais essayer de comprendre pourquoi cela se produit.


Comment activerProdMode () si vous n'utilisez pas dactylographié? Si j'appelle simplement cette méthode avant ng.platform.browser.bootstrap (...) j'obtiens cette erreur: enableProdMode n'est pas défini
Daniel Dudas

2
@DanielDudas Je n'utilise pas es5, mais essayezng.core.enableProdMode()
Sasxa

3
Je crois que "angular2 / core" est maintenant "@ angular / core". Voir ma réponse ci-dessous.
adampasz

J'utilise Ionic2. Dans quel fichier s'appelle ce bootstrap? Lorsque je génère un exemple d'application, ionic start test sidemenu --v2 --tsje vois app.tsmais où cette fonction d'amorçage est-elle appelée?
Guus

1
J'ai fait la même chose mais j'obtiens une exception comme "Impossible d'activer le mode prod après l'installation de la plate-forme". Quelqu'un pourrait-il m'aider à résoudre ce problème?
Gowtham

81

La meilleure façon d'activer le mode production pour une application Angular 2 est d'utiliser angular-cli et à créer l'application avec ng build --prod. Cela créera l'application avec un profil de production. L'utilisation d'angular-cli a l'avantage de pouvoir utiliser le mode de développement en utilisant ng serveou ng buildpendant le développement sans modifier le code en permanence.


6
J'utilise Angular 6 et c'est ng build --prod pour construire en mode prod. Il suffit de mettre ceci ici pour tous les nouveaux arrivants visitant cette page.
Verbose du

Je pense que build --prod a été implémenté en gardant à l'esprit isDevMode et enableProdMode. Cette réponse doit être marquée comme la réponse
bubi

58

Cela a fonctionné pour moi, en utilisant la dernière version d'Angular 2 (2.0.0-rc.1):

main.ts

import {enableProdMode} from '@angular/core';

enableProdMode();
bootstrap(....);

Voici la référence de la fonction tirée de leur documentation: https://angular.io/api/core/enableProdMode



1
@emp Je suis surpris que la documentation officielle d'Angular enableProdModene vous dise pas vous êtes censé l'appeler.
Dai

55

Quand j'ai construit un nouveau projet en utilisant angular-cli. Un fichier a été inclus appelé environment.ts. À l'intérieur de ce fichier se trouve une variable comme celle-ci.

export const environment = {
  production: true
};

Ensuite, dans main.ts, vous avez ceci.

import './polyfills.ts';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { enableProdMode } from '@angular/core';
import { environment } from './environments/environment';
import { AppModule } from './app/';

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

platformBrowserDynamic().bootstrapModule(AppModule);

Vous pouvez l'ajouter à un projet non angular-cli, je suppose, car enableProdMode () est importé depuis @ angular / core.


Comment cela fonctionne-t-il pour les versions non prod? Je suppose que dans ce cas, environment.ts est ignoré, alors n'obtenez-vous pas une erreur de compilation tsc lorsque vous essayez d'importer le module?
llasarov

@llasarov l'environnement.ts se comporte simplement comme un fichier de configuration, dans lequel vous pouvez activer / désactiver le mode production. Le main.ts appelle simplement le enableProdMode si c'est vrai, donc cela peut être fait sans aucun processus de construction spécifique. Vous pouvez également sélectionner la journalisation ici, en vérifiant si le logMode est débogué, puis votre service de journalisation personnalisé effectuant un StackTrace détaillé, sinon en enregistrant simplement une seule ligne
NitinSingh

13

Accédez au src/enviroments/enviroments.tsmode production et activez-le

export const environment = {
  production: true
};

pour Angular 2


10

Pour activer le mode de production en angulaire 6.XX Il suffit d'aller dans le fichier d'environnement

Comme ce chemin

Ton chemin: project>\src\environments\environment.ts

Changement production: falsede:

export const environment = {
  production: false
};

À

export const environment = {
  production: true
};

entrez la description de l'image ici


8

La plupart du temps, le mode prod n'est pas nécessaire pendant le développement. Notre solution de contournement consiste donc à l'activer uniquement lorsque ce n'est PAS localhost.

Dans votre navigateur main.tsoù vous définissez votre AppModule racine:

const isLocal: boolean = /localhost/.test(document.location.host);
!isLocal && enableProdMode();
platformBrowserDynamic().bootstrapModule(AppModule);

Le isLocalpeut également être utilisé à d'autres fins comme enableTracingpour RouterModuleune meilleure trace de la pile de débogage pendant la phase de développement.


6

Lorsque la commande ng build est utilisée, elle écrase le fichier environment.ts

Par défaut, lorsque la commande ng build est utilisée, elle définit l'environnement de développement

Afin d'utiliser l'environnement de production, utilisez la commande suivante ng build --env = prod

Cela activera le mode production et mettra automatiquement à jour le fichier environment.ts


1
Cela a été changé dans Angular CLI 6 en ng build --configuration=production(par défaut à l'aide du fichier angular.json généré par CLI).
slasky

5

vous pouvez utiliser dans votre app.ts || fichier main.ts

import {enableProdMode} from '@angular/core';
enableProdMode();
bootstrap(....);

5

Dans le fichier environment.ts, définissez la production sur true

export const environment = {
  production: true
};

Vraiment EZ: P TY pour ...!
Carlos Galeano

4

Pour ceux qui effectuent le chemin de mise à niveau sans passer également à TypeScript, utilisez:

ng.core.enableProdMode()

Pour moi (en javascript), cela ressemble à:

var upgradeAdapter = new ng.upgrade.UpgradeAdapter();
ng.core.enableProdMode()
upgradeAdapter.bootstrap(document.body, ['fooApp']);

4

Vous n'avez pas besoin de fournir un fichier environment.ts ou un tel fichier par votre projet d'amorçage. Ayez simplement un fichier configuration.ts et ajoutez toutes ces entrées qui nécessitent une décision d'exécution (exemple: - configuration de journalisation et URL). Cela s'intégrera dans n'importe quelle structure de conception et aidera également à l'avenir

configuration.ts

export class Configuration {

   isInProductionMode : bool = true;

   // other configuration
   serviceUrl : string = "http://myserver/myservice.svc";
   logFileName : string = "...";
}

// Maintenant, utilisez dans votre code de démarrage (main.ts ou équivalent selon la conception du projet d'amorçage

import { Configuration } from './configuration';
import { enableProdMode } from '@angular/core';
....
if (Configuration.isInProductionMode)
    enableProdMode();

1
comment différenciez-vous prod / dev avec qui isInProductionModeest vrai / faux? dans le temps de construction?
LeOn - Han Li

Habituellement en tant que paramètre GULP ou équivalent
NitinSingh

Le JSON a une entrée comme suit: - "environmentSource": "environnements / environment.ts", "environnements": {"dev": "environnements / environment.ts", "prod": "environnements / environment.prod.ts" }
NitinSingh


0

Mon projet Angular 2 n'a pas le fichier "main.ts" mentionné d'autres réponses, mais il a un fichier " boot.ts ", qui semble être à peu près la même chose. (La différence est probablement due aux différentes versions d'Angular.)

L'ajout de ces deux lignes après la dernière importdirective dans "boot.ts" a fonctionné pour moi:

import { enableProdMode } from "@angular/core";
enableProdMode();
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.