Jak zaktualizować Angular CLI do najnowszej wersji

102

Za pomocą ng --versiondostałem:

@ kątowe / cli: 1.0.0

która nie jest najnowszą dostępną wersją.

Ponieważ mam globalnie zainstalowany Angular CLI w moim systemie, aby go zaktualizować, spróbowałem:

npm update angular-cli -g

Ale to nie działa, ponieważ pozostaje w wersji 1.0.0.

Francesco Borzi
źródło

Odpowiedzi:

833

Po przeczytaniu kilku problemów zgłoszonych w repozytorium GitHub znalazłem rozwiązanie.

Aby zaktualizować pakiet angular-cli zainstalowany globalnie w systemie, musisz uruchomić:

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

W zależności od systemu może być konieczne poprzedzenie powyższych poleceń przedrostkiem sudo.

Najprawdopodobniej chcesz również zaktualizować lokalną wersję projektu, ponieważ w katalogu Twojego projektu zostanie wybrana z wyższym priorytetem niż globalny:

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

dzięki grizzm0 za wskazanie tego w GitHub .

Po zaktualizowaniu CLI prawdopodobnie zechcesz zaktualizować również wersję Angular .

Uwaga : jeśli aktualizujesz do Angular CLI 6+ ze starszej wersji, może być konieczne przeczytanie tego .

Edycja : Ponadto, jeśli nadal korzystasz z wersji cli 1.x, musisz przekonwertować ją angular-cli.jsonna angular.json, co możesz zrobić za pomocą następującego polecenia:

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

(sprawdź to, aby uzyskać więcej informacji).

Francesco Borzi
źródło
3
Alert pedantyczny: więcej informacji na temat zmian między wersjami można znaleźć na karcie Wersje w witrynie GitHub. Link: github.com/angular/angular-cli/releases
Stuti Verma
14
Aktualizacja 2017 (npm @ 5): jeśli naprawdę potrzebujesz wyczyścić pamięć podręczną: „npm cache clean --force”
Neyt
3
dlaczego odinstalować angular-cli, a nie cały @ angular / cli?
YASH DAVE
4
Uruchomienie polecenia npm cache clean zgłasza błąd „Począwszy od npm @ 5 pamięć podręczna npm samonaprawia się po problemach z uszkodzeniem, a dane wyodrębnione z pamięci podręcznej są prawidłowe. Jeśli chcesz mieć pewność, że wszystko jest spójne, użyj zamiast tego polecenia „npm cache verify”. „jeśli chcesz wymusić, możesz dodać --force
Pushkal Boganatham
1
@PushkalBoganatham, jak powiedział @neyt, musisz użyć --forceflagi
svict4
149

ng6 + -> 7,0

Zaktualizuj RxJS (w zależności od RxJS 6.3)

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

Usunąć rxjs-compat

Następnie zaktualizuj podstawowe pakiety i Cli:

ng update @angular/cli @angular/core

(Opcjonalnie: zaktualizuj Node.js do wersji 10, która jest obsługiwana w NG7)

ng6 + (Cli 6.0+) : zawiera uproszczone polecenia

Najpierw zaktualizuj Cli

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

Następnie zaktualizuj podstawowe pakiety

ng update @angular/core

Jeśli używasz RxJS, uruchom

ng update rxjs

Zaktualizuje RxJS do wersji 6 i zainstaluje rxjs-compatpakiet pod maską.

Jeśli napotkasz błędy kompilacji, spróbuj ręcznie zainstalować:

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

Na koniec sprawdź swoją wersję

ng v

Uwaga dotycząca wersji produkcyjnej:

ng6 nie używa już intlwpolyfills.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 [email protected] rxjs@'^5.5.2'
npm install [email protected] --save-exact

Uwaga:

  1. Obsługiwana wersja Typescript dla Cli 1.6 w momencie pisania wynosi do 2.5.3.
  2. Użycie @next aktualizuje pakiet do wersji beta, jeśli jest dostępny. Użyj @latest, aby uzyskać najnowszą wersję inną niż beta.

Po zaktualizowaniu zarówno pakietu globalnego, jak i lokalnego, wyczyść pamięć podręczną, aby uniknąć błędów:

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

Oto oficjalne odniesienia:

  1. Aktualizacja Cli
  2. Aktualizacja pakietu podstawowego pakietów podstawowych .
Pageii Studio
źródło
4
npm cache clean --force Naprawdę mi pomogło
Pini Cheyni
1
Dlaczego, och, dlaczego ta część jest nie w informacjach o wydaniu!
Drenai
czy możesz potwierdzić, co powiedziałeś o wycofaniu RxJS 6. Gdziekolwiek spojrzę, okazuje się, że v6 jest najnowszą stabilną wersją github.com/ReactiveX/rxjs rxjs-dev.firebaseapp.com
Joey Gough
1
@JoeyGough niezły chwyt! Ng7 zależy od rxjs 6.3. Dzięki za komentarz. ref: github.com/angular/angular/blob/master/…
Pageii Studio
108

możesz po prostu użyć

npm install -g angular-cli - jeśli to twój pierwszy raz

npm install -g @angular/cli@latest - jeśli masz już zainstalowany, więc do aktualizacji

SamYah
źródło
37

Potężne polecenie instaluje i zastępuje ostatni pakiet.

Miałem podobny problem. Naprawiłem to.

 npm install -g @angular/cli@latest

i

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

wprowadź opis obrazu tutaj

BehrouzMoslem
źródło
to zadziała dla lokalnego Angular CLI, sprawdź moją odpowiedź, aby ulepszyć globalną
Francesco Borzi
zaktualizowałem moje globalne kliknięcie
Rahmathullah M
35

To polecenie działa dobrze:

npm upgrade -g @angular/cli
wdavilaneto
źródło
22

U mnie zadziałało następujące podejście:

npm uninstall -g @angular/cli

następnie

npm cache verify

następnie

npm install -g @angular/cli@latest

Pracuję na Windows 10, czasami musiałem używać: npm cache clean --forceteż. Nie musisz tego robić, jeśli nie masz żadnego problemu podczas instalacji.

Enayat
źródło
2
Nie musisz określać @latest, ponieważ wartość domyślna to najnowszy.
Ambroise Rabier
Jeśli to rozwiązanie nie działa dla Ciebie: stackoverflow.com/a/58678941/8718377
veben
17

Jeśli masz jakiekolwiek trudności z zarządzaniem wersją globalnego CLI , lepiej jest użyć NVM: MAC , Windows .

Aby zaktualizować lokalny CLI w projekcie Angular, wykonaj następujące kroki:

Począwszy od CLI v6 , możesz po prostu uruchomić ng update, aby automatycznie zaktualizować zależności do nowej wersji.

ng update @angular/cli

Z ng updateczasem możesz dodać --forceflagę.

Możesz także przekazać --allflagę, aby zaktualizować wszystkie pakiety w tym samym czasie.

ng update --all --force

Jeśli chcesz tylko migrować CLI, po prostu uruchom to:

ng update @angular/cli --migrateOnly

Możesz również przekazać flagę --from=from- wersję z której chcesz migrować np --from=1.7.4. Ta flaga jest dostępna tylko w przypadku aktualizowania jednego pakietu i tylko podczas migracji.

Po zakończeniu aktualizacji upewnij się, że zainstalowana wersja maszynopisu jest obsługiwana przez aktualną wersję kątową, w przeciwnym razie może być konieczne obniżenie wersji maszynopisu. Pamiętaj też, że zazwyczaj najnowsza wersja angular nie obsługuje najnowszej wersji maszynopisu.

Angular CLI / Angular / NodeJS / TypescriptWersje kompatybilne z Google Checkout tutaj

Zapoznaj się również z tym przewodnikiem Aktualizowanie projektów Angular i update.angular.io


STARA ODPOWIEDŹ:
Wszystko, co musisz zrobić, to porównać z angular-cli-diff i zastosować zmiany w bieżącym projekcie.

Oto kroki:

  1. Powiedzmy, że przechodzisz od 1.4. do wersji 1.5, a następnie https://github.com/cexbrayat/angular-cli-diff/compare/1.4.0...1.5.0
  2. kliknij File changedkartę
  3. Zastosuj zmiany do bieżącego projektu.
  4. npm install / yarn
  5. Przetestuj wszystko npm scripts( więcej szczegółów tutaj: https://stackoverflow.com/a/45431592/415078 )
kuncevic.dev
źródło
14

Oprócz odpowiedzi @ShinDarth .

Zrobiłem to, co powiedział, ale mój pakiet nie zaktualizował wersji kątowej i wiem, że ten post jest o angular-cli, ale myślę, że to też może pomóc.

  • więc po zrobieniu tego, co @ShinDarth powiedział powyżej, aby naprawić moją wersję kątową, musiałem utworzyć nowy projekt z -ng new projectnamewygenerowanym pakietem.
  • skopiuj nowy pakiet, a następnie wklej nowy pakiet do wszystkich pakietów projektów wymagających aktualizacji (pamiętaj, aby dodać istniejące zależności i zmienić nazwę w pierwszym wierszu) lub możesz po prostu zmienić wersje ręcznie bez kopiowania i wklejania.
  • następnie biegnij -npm install.

Teraz ng serveznowu działa, może jest lepszy sposób na zrobienie tego wszystkiego, jeśli ktoś wie, proszę o podzielenie się, ponieważ jest to uciążliwe w przypadku wszystkich projektów, które wymagają aktualizacji.

Leonardo Souza Paiva
źródło
wygląda na bardziej dodatek do mojej odpowiedzi niż odpowiedź, więc może możesz to przenieść jako komentarz pod moją odpowiedzią?
Francesco Borzi
7
sry, masz rację, ale potrzebuję 50 punktów reputacji, aby skomentować Twoją odpowiedź.
Leonardo Souza Paiva
9

Aby zaktualizować interfejs wiersza polecenia Angular do nowej wersji, należy zaktualizować zarówno pakiet globalny, jak i pakiet lokalny projektu.

Pakiet globalny:

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

Pakiet projektu lokalnego:

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

Źródło: Github

Hasan Fathi
źródło
3

W moim przypadku zainstalowałem lokalnie angular-cli przy użyciu npm install --save-dev angular-cli. Tak więc, kiedy używam polecenia npm install -g @ angular / cli, generuje błąd informujący, że „Twoja globalna wersja Angular CLI (1.7.3) jest większa niż Twoja lokalna wersja (1.4.9)” . Należy pamiętać, że angular-cli, @ angular / cli i @ angular / cli @ latest to dwie różne klasy CLI. Rozwiązaniem tego problemu jest odinstalowanie całego CLI, a następnie zainstalowanie najnowszego kątowego CLI przy użyciu npm install -g @ angular / cli @ latest

ARKhan
źródło