Come aggiornare Angular CLI alla versione più recente


102

Utilizzando ng --versionho ottenuto:

@ angolare / cli: 1.0.0

che non è l'ultima versione disponibile.

Dato che Angular CLI è installato globalmente sul mio sistema, per aggiornarlo ho provato:

npm update angular-cli -g

Ma non funziona, perché rimane alla versione 1.0.0.

Risposte:


833

Dopo aver letto alcuni problemi segnalati sul repository GitHub, ho trovato la soluzione.

Per aggiornare il pacchetto angular-cli installato globalmente nel tuo sistema, devi eseguire:

npm uninstall -g @angular-cli
npm install -g @angular/cli@latest

A seconda del sistema in uso, potrebbe essere necessario anteporre ai comandi precedenti sudo.

Inoltre, molto probabilmente vorrai aggiornare anche la versione del tuo progetto locale, perché all'interno della directory del tuo progetto verrà selezionata con priorità più alta di quella globale:

rm -rf node_modules
npm uninstall --save-dev @angular-cli
npm install --save-dev @angular/cli@latest
npm install

grazie grizzm0 per averlo segnalato su GitHub .

Dopo aver aggiornato la tua CLI, probabilmente vorrai aggiornare anche la tua versione Angular .

Nota : se stai aggiornando ad Angular CLI 6+ da una versione precedente, potresti dover leggere questo .

Modifica : Inoltre, se eri ancora su una versione 1.x del cli, devi convertirlo angular-cli.jsonin angular.json, cosa che puoi fare con il seguente comando:

ng update @angular/cli --from=1.7.4 --migrate-only

(controlla questo per maggiori dettagli).


3
Avviso pedante: puoi trovare maggiori dettagli sulle modifiche tra le versioni nella scheda Versioni su GitHub. Link: github.com/angular/angular-cli/releases
Stuti Verma

14
Aggiornamento 2017 (npm @ 5): se hai davvero bisogno di pulire la cache: "npm cache clean --force"
Neyt

3
perché disinstallare angular-cli e non intero @ angular / cli?
YASH DAVE

4
L'esecuzione del comando npm cache clean genera l'errore "A partire da npm @ 5, la cache npm si risolve automaticamente dai problemi di danneggiamento e viene garantita la validità dei dati estratti dalla cache. Se vuoi assicurarti che tutto sia coerente, usa invece "npm cache verify". "se vuoi forzare, puoi aggiungere --force
Pushkal Boganatham

1
@PushkalBoganatham come ha affermato @neyt, devi usare la --forcebandiera
svict4

149

ng6 + -> 7.0

Aggiorna RxJS (dipende da RxJS 6.3)

npm install -g rxjs-tslint
rxjs-5-to-6-migrate -p src/tsconfig.app.json

Rimuovere rxjs-compat

Quindi aggiorna i pacchetti principali e Cli:

ng update @angular/cli @angular/core

(Opzionale: aggiorna Node.js alla versione 10 che è supportata in NG7)

ng6 + (Cli 6.0+) : presenta comandi semplificati

Innanzitutto, aggiorna il tuo Cli

npm install -g @angular/cli
npm install @angular/cli
ng update @angular/cli

Quindi, aggiorna i tuoi pacchetti principali

ng update @angular/core

Se usi RxJS, esegui

ng update rxjs

Aggiornerà RxJS alla versione 6 e installerà il rxjs-compatpacchetto sotto il cofano.

Se si verificano errori di compilazione, provare un'installazione manuale di:

npm i rxjs-compat
npm i @angular-devkit/build-angular

Infine, controlla la tua versione

ng v

Nota sulla build di produzione:

ng6 non utilizza più intlinpolyfills.ts

//remove them to avoid errors
import 'intl';
import 'intl/locale-data/jsonp/en';

ng5 + (Cli 1.5+)

npm install @angular/{animations,common,compiler,compiler-cli,core,forms,http,platform-browser,platform-browser-dynamic,platform-server,router}@next typescript@2.4.2 rxjs@'^5.5.2'
npm install typescript@2.4.2 --save-exact

Nota:

  1. La versione di Typescript supportata per Cli 1.6 al momento della scrittura è fino alla 2.5.3.
  2. L'utilizzo di @next aggiorna il pacchetto alla beta, se disponibile. Usa @latest per ottenere l'ultima versione non beta.

Dopo aver aggiornato sia il pacchetto globale che quello locale, svuota la cache per evitare errori:

npm cache verify (recommended)
npm cache clean (for older npm versions)

Ecco i riferimenti ufficiali:

  1. Aggiornamento del Cli
  2. Aggiornamento del pacchetto principale dei pacchetti di base .

4
npm cache clean --force Mi ha davvero aiutato
Pini Cheyni

1
Perché oh perché questa parte non è nelle note di rilascio!
Drenai

puoi confermare ciò che hai detto riguardo alla deprecazione di RxJS 6. Ovunque guardi sembra che la v6 sia l'ultima versione stabile github.com/ReactiveX/rxjs rxjs-dev.firebaseapp.com
Joey Gough

1
@JoeyGough bella cattura! Ng7 dipende da rxjs 6.3. Grazie per il tuo commento. rif: github.com/angular/angular/blob/master/…
Pageii Studio

108

puoi semplicemente usare

npm install -g angular-cli - se è la tua prima volta

npm install -g @angular/cli@latest - se è già installato, quindi per l'aggiornamento


37

Il potente comando installa e sostituisce l'ultimo pacchetto.

Ho avuto un problema simile. L'ho riparato.

 npm install -g @angular/cli@latest

e

npm install --save-dev @angular/cli@latest

inserisci qui la descrizione dell'immagine


questo funzionerà per una CLI angolare locale, controlla la mia risposta per aumentare quella globale
Francesco Borzi

aggiornato il mio cli globale
Rahmathullah M


22

Il seguente approccio ha funzionato per me:

npm uninstall -g @angular/cli

poi

npm cache verify

poi

npm install -g @angular/cli@latest

Lavoro su Windows 10, a volte ho dovuto usare: npm cache clean --forcepure. Non è necessario farlo se non si hanno problemi durante l'installazione.


2
Non è necessario specificare @latest, poiché l'ultima è l'impostazione predefinita.
Ambroise Rabier

Se questa soluzione non funziona per voi: stackoverflow.com/a/58678941/8718377
veben

17

In caso di difficoltà nella gestione della versione CLI globale è meglio utilizzare NVM: MAC , Windows .

Per aggiornare la CLI locale nel tuo progetto Angular, segui questi passaggi:

A partire dalla CLI v6 puoi semplicemente eseguire ng updateper ottenere le tue dipendenze aggiornate automaticamente a una nuova versione.

ng update @angular/cli

A ng updatevolte potresti voler aggiungere --forceflag.

Puoi anche passare il --allflag per aggiornare tutti i pacchetti contemporaneamente.

ng update --all --force

Se vuoi solo migrare la CLI, esegui questo:

ng update @angular/cli --migrateOnly

Puoi anche passare flag --from=from- versione da cui migrare, es --from=1.7.4. Questo flag è disponibile solo con un singolo pacchetto in fase di aggiornamento e solo durante la migrazione.

Dopo l'aggiornamento, assicurati che la versione del dattiloscritto che hai installato sia supportata dalla tua attuale versione angolare, altrimenti potresti dover eseguire il downgrade della versione del dattiloscritto. Tieni anche presente che di solito l'ultima versione di angular non supporta l'ultima versione del dattiloscritto.

Controlla Angular CLI / Angular / NodeJS / Typescriptle versioni di compatibilità qui

Controlla anche questa guida Aggiornamento dei tuoi progetti Angular e update.angular.io


VECCHIA RISPOSTA:
Tutto quello che devi fare è diff con angular-cli-diff e applicare le modifiche nel tuo progetto corrente.

Ecco i passaggi:

  1. Supponi di passare dalla 1.4. a 1.5 poi fai https://github.com/cexbrayat/angular-cli-diff/compare/1.4.0...1.5.0
  2. fare clic sulla File changedscheda
  3. Applica le modifiche al tuo progetto corrente.
  4. npm install / yarn
  5. Prova tutto npm scripts( maggiori dettagli qui: https://stackoverflow.com/a/45431592/415078 )

14

Oltre alla risposta @ShinDarth .

Ho fatto quello che ha detto ma il mio pacchetto non ha aggiornato la versione angolare, e so che questo post parla angular-cli, ma penso che anche questo possa aiutare.

  • quindi dopo aver fatto ciò che @ShinDarth ha detto sopra, per correggere la mia versione angolare ho dovuto creare un nuovo progetto con -ng new projectnamequello generato un pacchetto.
  • copia il nuovo pacchetto, quindi incolla il nuovo pacchetto su tutti i pacchetti dei progetti che necessitano di aggiornamento (ricorda di aggiungere le dipendenze che avevi e cambia il nome sulla prima riga) oppure puoi semplicemente cambiare le versioni manualmente senza copiare e incollare.
  • quindi corri -npm install.

Ora il mio ng servesta lavorando di nuovo, forse c'è un modo migliore per fare tutto questo, se qualcuno lo sa, per favore condividilo, perché questo è un problema con tutti i progetti che necessitano di aggiornamento.


sembra più un'aggiunta alla mia risposta che una risposta, quindi forse puoi spostarla come commento sotto la mia risposta?
Francesco Borzi

7
sry, hai ragione ma ho bisogno di 50 reputazione per commentare la tua risposta.
Leonardo Souza Paiva

9

Per aggiornare Angular CLI a una nuova versione, è necessario aggiornare sia il pacchetto globale che il pacchetto locale del progetto.

Pacchetto globale:

npm uninstall -g @angular/cli
npm cache clean
# if npm version is > 5 then use `npm cache verify` to avoid errors (or to avoid using --force)
npm install -g @angular/cli@latest

Pacchetto progetto locale:

rm -rf node_modules dist # use rmdir /S/Q node_modules dist in Windows Command Prompt; use rm -r -fo node_modules,dist in Windows PowerShell
npm install --save-dev @angular/cli@latest
npm install

Fonte: Github


3

Nel mio caso, ho installato angular-cli localmente utilizzando npm install --save-dev angular-cli. Quindi, quando utilizzo il comando npm install -g @ angular / cli, viene generato un errore che dice che "La tua versione globale di Angular CLI (1.7.3) è maggiore della tua versione locale (1.4.9)" . Si noti che angular-cli, @ angular / cli e @ angular / cli @ latest sono due diversi cli. Ciò che risolve questo problema è disinstallare tutto il cli e quindi installare l'ultimo cli angolare utilizzando npm install -g @ angular / cli @ latest

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.