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.

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).


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 typescript@2.4.2 rxjs@'^5.5.2'
npm install typescript@2.4.2 --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 .

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


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


to zadziała dla lokalnego Angular CLI, sprawdź moją odpowiedź, aby ulepszyć globalną
Francesco Borzi

zaktualizowałem moje globalne kliknięcie
Rahmathullah M


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.


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 )

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.


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


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.