Come impostare l'ambiente tramite `ng serve` in Angular 6


169

Sto cercando di aggiornare la mia app Angular 5.2 su Angular 6. Ho seguito con successo le istruzioni nella guida all'aggiornamento Angular (incluso l'aggiornamento angular-clia v6) e ora sto cercando di pubblicare l'app tramite

ng serve --env=local

Ma questo mi dà errore:

Opzione sconosciuta: '--env'

Uso più ambienti ( dev/local/prod) e questo è il modo in cui funzionava in Angular 5.2. Come posso impostare l'ambiente ora in Angular 6?


1
è v6, si aggiorna a angular-clifianco dell'intera app, quindi ho pensato che fosse ovvio:]
Martin Adámek,

5
Molto utile, Martin. Grazie per condividere la vostra intuizione. In realtà non è affatto ovvio.
Maxxx

Risposte:


303

Devi usare la nuova configurationopzione (funziona anche per ng builde ng serve)

ng serve --configuration=local

o

ng serve -c local

Se guardi il tuo angular.jsonfile, vedrai che hai un controllo più preciso sulle impostazioni per ogni configurazione (aot, ottimizzatore, file di ambiente, ...)

"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"
      }
    ]
  }
}

Puoi ottenere maggiori informazioni qui per la gestione di configurazioni specifiche dell'ambiente.

Come indicato nell'altra risposta di seguito, se è necessario aggiungere un nuovo "ambiente", è necessario aggiungere una nuova configurazione all'attività di compilazione e, a seconda delle esigenze, anche alle attività di servizio e test .

Aggiunta di un nuovo ambiente

Modifica : per chiarire, le sostituzioni di file devono essere specificate nella buildsezione. Quindi, se si desidera utilizzare ng servecon un environmentfile specifico (ad esempio dev2 ), è innanzitutto necessario modificare la buildsezione per aggiungere una nuova configurazione 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
        },

Quindi modifica la tua servesezione per aggiungere anche una nuova configurazione, indicando la configurazione dev2 che build hai appena dichiarato

"serve":
      "configurations": {
        "dev2": {
          "browserTarget": "projectName:build:dev2"
        }

Quindi è possibile utilizzare ng serve -c dev2, che utilizzerà il file di configurazione dev2


sai se è possibile aggiungere anche base-href nelle configurazioni? o semplicemente nella build di --c staging --base-href = / yyy /
Eduardo Tolino

@EduardoTolino: Sì, puoi, c'è baseHrefun'opzione
David

Dove posso specificare la porta di debug remota per l'ambiente di sviluppo? Per eseguire il debug con VSCode. In Angular 6naturalmente. In modo che il ng servecomando includa la porta del debugger remoto all'avvio del Chromebrowser.
Stephane,

link
informativo

1
ng serve -c local impiega del tempo per compilare l'applicazione rispetto a "ng serve"
Vignesh,

46

Questa risposta sembra buona.
tuttavia, mi porta verso un errore poiché ha provocato un
Configuration 'xyz' could not be found in project ...
errore nella build.
È necessario non solo aggiornare le configurazioni di build , ma anche servirle .

Quindi, solo per non lasciare confusioni:

  1. --env non è supportato in angular 6
  2. --envè stato modificato in --configuration|| -c(ed è ora più potente)
  3. per gestire vari envs, oltre ad aggiungere un nuovo file di ambiente, ora è necessario apportare alcune modifiche al angular.jsonfile:
    • aggiungi una nuova configurazione nella proprietà build { ... "build": "configurations": ...
    • la nuova configurazione di build può contenere solo una fileReplacementsparte (ma sono disponibili più opzioni)
    • aggiungi una nuova configurazione nella proprietà serve { ... "serve": "configurations": ...
    • la nuova configurazione del servizio deve contenere dibrowserTarget="your-project-name:build:staging"

8

Puoi provare: ng serve --configuration=dev/prod

Per costruire usare: ng build --prod --configuration=dev

Spero che tu stia utilizzando un diverso tipo di ambiente.


ng serve --configuration = Il comando dev / prod richiede tempo rispetto a ng serve perché?
Vignesh,

ng serve --configuration = prod richiede più tempo quindi serve --configuration = prod a causa della minimizzazione dei file e del codice pronto per la produzione.
amku91,

ok se uso il comando "ng serve --configuration = dev" significa che impiega anche più tempo
Vignesh

No, non dovrebbe volerci più tempo. L'ambiente prod ha ulteriori passaggi per minimizzare, ottimizzare e ottimizzare il codice per la produzione. Gli altri ambienti dovrebbero richiedere il tempo normale, a meno che non si attivino esplicitamente questi passaggi aggiuntivi.
Reginaldo Camargo Ribeiro,

6

Per Angular 2 - 5 consultare l'articolo Multiple Environment in angular

Per uso Angolare 6 ng serve --configuration=dev

Nota: fare riferimento allo stesso articolo anche per l'angolare 6. Ma ovunque trovi --envinvece usa --configuration. Funziona bene con Angular 6.


2

È possibile utilizzare il comando ng serve -c devper l'ambiente di sviluppo ng serve -c prodper l' ambiente di produzione

mentre la costruzione vale anche lo stesso. Puoi usare ng build -c devper dev build


2

Angular non supporta più --env invece devi usarlo

ng serve -c dev

per l'ambiente di sviluppo e,

ng serve -c prod 

per la produzione.

NOTA: -co--configuration


Questo è stato chiesto e risposto un anno fa, anche la tua risposta è sbagliata, è -c(con trattino singolo) o --configuration(con trattini doppi).
Martin Adámek,

0

Utilizzare questo comando per Angular 6 per costruire

ng build --prod --configuration=dev
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.