Cómo configurar el entorno a través de `ngserve` en Angular 6

Resuelto Martin Adámek asked hace 6 años • 8 respuestas

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-cliv6) 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?

Martin Adámek avatar May 04 '18 19:05 Martin Adámek
Aceptado

Debes usar la nueva configurationopción (esto funciona para ng buildy ng servetambién)

ng serve --configuration=local

o

ng serve -c local

Si observa su angular.jsonarchivo, 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 buildsección. Entonces, si desea usarlo ng servecon un environmentarchivo específico (por ejemplo, dev2 ), primero debe modificar la buildsecció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 servesecció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

David avatar May 04 '2018 12:05 David

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:

  1. --envno es compatible conangular 6
  2. --envse transformó en --configuration|| -c(y ahora es más poderoso)
  3. Para administrar varios entornos, además de agregar un nuevo archivo de entorno, ahora es necesario realizar algunos cambios en el angular.jsonarchivo:
    • agregar nueva configuración en la propiedad de compilación { ... "build": "configurations": ...
    • La nueva configuración de compilación puede contener solo fileReplacementsuna 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á debrowserTarget="your-project-name:build:staging"
garfunkel61 avatar May 28 '2018 10:05 garfunkel61

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: -co--configuration

Shilpa Soni avatar Apr 30 '2019 18:04 Shilpa Soni

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.

amku91 avatar Aug 22 '2018 10:08 amku91