publicar - subir proyecto angular a servidor
Cómo habilitar el modo de producción en Angular 2 (14)
Soy nuevo en Angular2, estaba leyendo preguntas resueltas y encontré esto
Error de enlace del método Angular2: "el valor ha cambiado después de que se verificó"
lo cual es muy interesante, pero mi pregunta es cómo puedo cambiar del desarrollo a la producción, es que hay diferencias después de leer esta pregunta
¿Cuál es la diferencia entre el modo de producción y desarrollo en Angular2?
Busqué pero no encuentro nada que indique el modo, y dónde hay que indicar el modo (desarrollo) o el modo (producción).
en la consola puedo ver
....Call enableProdMode() to enable the production mode.
pero donde en
System.config({
o en las clases de componentes.
¿Se necesita una importación específica?
Cuando construí un nuevo proyecto usando angular-cli. Se incluyó un archivo llamado environment.ts. Dentro de este archivo hay una variable como esta.
export const environment = {
production: true
};
Luego, en main.ts tienes esto.
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);
Podría suponer esto a un proyecto no angular-cli, supongo, porque enableProdMode () se está importando desde @ angular / core.
Cuando se usa el comando ng build, sobrescribe el archivo environment.ts
Por defecto, cuando se usa el comando ng build, establece el entorno de desarrollo
Para usar el entorno de producción, use el siguiente comando ng build --env = prod
Esto habilitará el modo de producción y actualizará automáticamente el archivo environment.ts
En el entorno.ts el archivo establece la producción en verdadero
export const environment = {
production: true
};
Esto funcionó para mí, utilizando la última versión de Angular 2 (2.0.0-rc.1):
main.ts
import {enableProdMode} from ''@angular/core'';
enableProdMode();
bootstrap(....);
Aquí está la referencia de función de sus documentos: https://angular.io/api/core/enableProdMode
La mayoría de las veces el modo de producción no es necesario durante el tiempo de desarrollo. Entonces, nuestra solución es habilitarlo solo cuando NO sea localhost.
En
main.ts
su navegador donde define su AppModule raíz:
const isLocal: boolean = /localhost/.test(document.location.host);
!isLocal && enableProdMode();
platformBrowserDynamic().bootstrapModule(AppModule);
isLocal
también se puede usar para otros fines, como
enableTracing
para
RouterModule
para mejorar la depuración del seguimiento de la pila durante la fase de desarrollo.
La mejor manera de habilitar el modo de producción para una aplicación Angular 2 es usar
angular-cli
y compilar la aplicación con
ng build --prod
.
Esto construirá la aplicación con perfil de producción.
El uso de angular-cli tiene la ventaja de poder usar el modo de desarrollo usando
ng serve
o
ng build
mientras se desarrolla sin alterar el código todo el tiempo.
Lo habilita importando y ejecutando la función (antes de llamar a bootstrap):
import {enableProdMode} from ''@angular/core'';
enableProdMode();
bootstrap(....);
Pero este error es un indicador de que algo está mal con sus enlaces, por lo que no debe simplemente descartarlo, sino tratar de descubrir por qué está sucediendo.
Mi proyecto Angular 2 no tiene el archivo "main.ts" mencionado en otras respuestas, pero sí tiene un archivo " boot.ts ", que parece ser casi lo mismo. (La diferencia probablemente se deba a las diferentes versiones de Angular).
Agregar estas dos líneas después de la última directiva de
import
en "boot.ts" funcionó para mí:
import { enableProdMode } from "@angular/core";
enableProdMode();
No necesita ningún entorno.ts o tal archivo para ser proporcionado por su proyecto semilla. Solo tenga un archivo configuration.ts y agregue todas las entradas que requieran una decisión de tiempo de ejecución (ejemplo: configuración de registro y URL). Esto encajará en cualquier estructura de diseño y también ayudará en el futuro
configuration.ts
import { Configuration } from ''./configuration'';
import { enableProdMode } from ''@angular/core'';
....
if (Configuration.isInProductionMode)
enableProdMode();
// Ahora use en su código de inicio (main.ts o equivalente según el diseño del proyecto semilla
import {enableProdMode} from ''@angular/core'';
enableProdMode();
bootstrap(....);
Para aquellos que realizan la ruta de actualización sin cambiar también a TypeScript, use:
var upgradeAdapter = new ng.upgrade.UpgradeAdapter();
ng.core.enableProdMode()
upgradeAdapter.bootstrap(document.body, [''fooApp'']);
Para mí (en javascript) esto se ve así:
export class Configuration {
isInProductionMode : bool = true;
// other configuration
serviceUrl : string = "http://myserver/myservice.svc";
logFileName : string = "...";
}
Vaya a
src/enviroments/enviroments.ts
y active el modo de producción.
export const environment = {
production: true
};
para Angular 2
ng build --prod reemplaza environment.ts con environment.prod.ts ng build --prod
puedes usar en tu app.ts || archivo main.ts
ng.core.enableProdMode()