Cómo configurar el entorno a través de `ngserve` en Angular 6
Estoy intentando actualizar mi aplicación Angular 5.2 a Angular 6. Seguí con éxito las instrucciones de la guía de actualización de Angular (incluida la actualización a angular-cli
v6) y ahora estoy intentando entregar la aplicación a través de
ng serve --env=local
Pero esto me da error:
Opción desconocida: '--env'
Utilizo múltiples entornos ( dev/local/prod
), y así es como funcionaba en Angular 5.2. ¿Cómo puedo configurar el entorno ahora en Angular 6?
Debes usar la nueva configuration
opción (esto funciona para ng build
y ng serve
también)
ng serve --configuration=local
o
ng serve -c local
Si observa su angular.json
archivo, verá que tiene un control más preciso sobre la configuración de cada configuración (aot, optimizador, archivos de entorno,...)
"configurations": {
"production": {
"optimization": true,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true,
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.prod.ts"
}
]
}
}
Puede obtener más información aquí para administrar configuraciones específicas del entorno.
Como se indica en la otra respuesta a continuación, si necesita agregar un nuevo 'entorno', debe agregar una nueva configuración a la tarea de compilación y, según sus necesidades, también a las tareas de servicio y prueba .
Agregar un nuevo entorno
Editar : Para que quede claro, los reemplazos de archivos deben especificarse en la build
sección. Entonces, si desea usarlo ng serve
con un environment
archivo específico (por ejemplo, dev2 ), primero debe modificar la build
sección para agregar una nueva configuración dev2 .
"build": {
"configurations": {
"dev2": {
"fileReplacements": [
{
"replace": "src/environments/environment.ts",
"with": "src/environments/environment.dev2.ts"
}
/* You can add all other options here, such as aot, optimization, ... */
],
"serviceWorker": true
},
Luego modifique su serve
sección para agregar también una nueva configuración, apuntando a la configuración dev2 build
que acaba de declarar.
"serve":
"configurations": {
"dev2": {
"browserTarget": "projectName:build:dev2"
}
Luego puedes usar ng serve -c dev2
, que usará el archivo de configuración dev2
Esta respuesta parece buena.
sin embargo, me llevó a un error ya que resultó en
Configuration 'xyz' could not be found in project ...
un error en la compilación.
Es necesario no solo actualizar las configuraciones de compilación , sino también servirlas
.
Entonces, para no dejar confusiones:
--env
no es compatible conangular 6
--env
se transformó en--configuration
||-c
(y ahora es más poderoso)- Para administrar varios entornos, además de agregar un nuevo archivo de entorno, ahora es necesario realizar algunos cambios en el
angular.json
archivo:- agregar nueva configuración en la propiedad de compilación
{ ... "build": "configurations": ...
- La nueva configuración de compilación puede contener solo
fileReplacements
una parte (pero hay más opciones disponibles) - agregar nueva configuración en la propiedad de servicio
{ ... "serve": "configurations": ...
- La nueva configuración de servicio contendrá de
browserTarget="your-project-name:build:staging"
- agregar nueva configuración en la propiedad de compilación
Angular ya no admite --env, sino que debes usarlo
ng serve -c dev
para el entorno de desarrollo y,
ng serve -c prod
para la producción.
NOTA: -c
o--configuration
Puedes probar:ng serve --configuration=dev/prod
Para construir uso:ng build --prod --configuration=dev
Espero que estés usando un tipo diferente de entorno.