Ponieważ Angular 6 jest tutaj, chcę zaktualizować lub przenieść moją aplikację kliencką Angular 5 do Angular 6, ale nie otrzymuję żadnego samouczka ani niczego, co mogłoby mnie poprowadzić.
Według mnie wystarczy uruchomić nowy Angular CLI, a następnie przenieść moje starsze źródło do nowego projektu. Czytałem, że Angular 6 używa nowego renderera o nazwie Ivy. Czy według Ivy będę musiał zmienić mój projekt?
angular
migration
upgrade
angular-ivy
Abhishek Chokra
źródło
źródło
Odpowiedzi:
Aktualizacja z Angular v6 do Angular v7
Wersja 7 Angular została udostępniona Oficjalny link do bloga Angular . Odwiedź oficjalny przewodnik aktualizacji kątowej https://update.angular.io, aby uzyskać szczegółowe informacje. Te kroki będą działać dla podstawowych aplikacji kątowych 6 używających Angular Material.
Uaktualnij z Angular v5 do Angular v6
Wersja 6 Angular została udostępniona Oficjalny link do bloga Angular . Wspomniałem poniżej o ogólnych krokach aktualizacji, ale przed i po aktualizacji musisz wprowadzić zmiany w swoim kodzie, aby działał w wersji 6, aby uzyskać szczegółowe informacje, odwiedź oficjalną stronę https://update.angular.io .
Kroki aktualizacji (w dużej mierze zaczerpnięte z oficjalnego przewodnika aktualizacji Angular dla podstawowej aplikacji Angular używającej Angular Material):
Upewnij się, że wersja NodeJS to 8.9+, jeśli nie, zaktualizuj ją.
Zaktualizuj Angular cli globalnie i lokalnie oraz przeprowadź migrację starej konfiguracji .angular-cli.json do nowego formatu angular.json , uruchamiając następujące polecenie:
Zaktualizuj wszystkie pakiety platformy Angular do wersji 6 oraz poprawną wersję RxJS i TypeScript, uruchamiając następujące polecenie:
Zaktualizuj materiał kątowy do najnowszej wersji, uruchamiając następujące polecenie:
RxJS v6 zawiera duże zmiany w stosunku do v5, v6 wprowadza pakiet kompatybilności wstecznej rxjs-Compatible, który zapewni działanie aplikacji, ale powinieneś refaktoryzować kod TypeScript, aby nie zależał od rxjs-complement. Aby refaktoryzować kod TypeScript, wykonaj następujące czynności:
Uwaga: Kiedy wszystkie zależności zostaną zaktualizowane do RxJS 6, usuń rxjs-Compatible, ponieważ zwiększa rozmiar pakietu. więcej informacji można znaleźć w tym przewodniku aktualizacji RxJS .
Gotowe,
ng serve
żeby to sprawdzić.Jeśli otrzymasz błędy w kompilacji, odwiedź https://update.angular.io, aby uzyskać szczegółowe informacje.
Aktualizacja z Angular v5 do Angular 6.0.0-rc.5
Zaktualizuj rxjs do wersji 6.0.0-beta.0. Więcej informacji znajdziesz w tym przewodniku aktualizacji RxJS . RxJS v6 zawiera istotne zmiany, dlatego najpierw spraw, aby Twój kod był zgodny z najnowszą wersją RxJS.
Zaktualizuj wersję NodeJS do 8.9+ (jest to wymagane przez wersję angular cli 6)
Zaktualizuj pakiet globalny Angular cli do następnej wersji.
jeśli wersja npm jest <5, użyj
npm cache clean
Zmień wersje pakietów kątowych w pliku package.json na
^6.0.0-rc.5
Następnie zaktualizuj pakiet lokalny Angular cli do następnej wersji i zainstaluj wyżej wymienione pakiety.
Format konfiguracji Angular CLI został zmieniony z wersji angular cli 6.0.0-rc.2, a istniejąca konfiguracja może zostać zaktualizowana automatycznie, uruchamiając następujące polecenie. Usunie stary plik konfiguracyjny .angular-cli.json i zapisze nowy plik angular.json .
ng update @angular/cli --migrate-only --from=1.7.4
Uwaga: - Jeśli pojawi się następujący błąd „Kompilator Angular wymaga TypeScript> = 2.7.2 i <2.8.0, ale zamiast tego został znaleziony 2.8.3”. uruchom następujące polecenie:
źródło
bash: rxjs-5-to-6-migrate: command not found
. jakieś pomysły?ng update @angular/core
w folderze projektu IONIC, otrzymuję błądInvalid range: "*"
"@angular-devkit/build-angular"
z ... Więc to naprawione przeznpm install @angular-devkit/build-angular --save-dev
. Inne niż to, że musiałem zaktualizować biblioteki, które zostały za pomocą poprzedniego rxjs-compat, jakng update @ngx-translate/core
,ng update @ng-bootstrap/ng-bootstrap
ponieważ niektóre z nich nie został poprawnie zaktualizowany.Angular 6 właśnie został wydany.
https://blog.angular.io/version-6-of-angular-now-available-cc56b0efa7a4
Oto, co zadziałało w przypadku jednego z moich mniejszych projektów
Może być konieczne zaktualizowanie skryptów uruchamiania w package.json Na przykład. jeśli używasz flag takich jak „aplikacja” i „środowisko” Zostały one zaktualizowane odpowiednio do „projektu” i „konfiguracji”.
Bardziej szczegółowy przewodnik można znaleźć pod adresem https://update.angular.io/ .
źródło
Po prostu skorzystaj z oficjalnego przewodnika aktualizacji, który powie Ci, co musisz zrobić dla swoich własnych potrzeb:
https://update.angular.io/
źródło
Sprawdź szczegółowe informacje o aktualizacji z Angular 5 do Angular 6. Zawiera szczegółowe informacje na temat problemów, które napotkasz podczas aktualizacji, oraz sposobów ich rozwiązania.
Zmiana nazwy operatora:
Wszyscy operatorzy przenieśli się do rxjs / operatorzy
Obserwowalne metody tworzenia zostały przeniesione do rxjs
Wszystko gotowe. Witaj w Angular 6 :) Sprawdź mój wpis na blogu, aby dowiedzieć się, jak zaktualizować
źródło
Musiałem ponownie uruchomić ng update @ angular / cli, aby angular-cli.json został zmieniony na angular.json
źródło
Uruchom poniższe komentarze, aby zaktualizować Angular 6 z Angular 5
źródło
Kompletny przewodnik
----------------- Z kątownikiem --------------------------
1. Zaktualizuj CLI globalnie i lokalnie
Korzystanie z NPM (upewnij się, że masz wersję 8+ węzła)
npm uninstall -g @angular/cli npm cache clean npm install -g @angular/cli@latest npm i @angular/cli --save
Korzystanie z przędzy
yarn remove @angular/cli yarn global add @angular/cli yarn add @angular/cli
2. Zaktualizuj zależności
Angular 6 zależy teraz od TypeScript 2.7 i RxJS 6
Zwykle oznaczałoby to, że musisz zaktualizować swój kod wszędzie tam, gdzie używane są importy RxJS i operatorzy, ale na szczęście istnieje pakiet, który zajmuje się większością ciężkich zadań:
Następnie możesz uruchomić rxjs-5-to-6-migrate
na koniec usuń rxjs-complement
Skorzystaj z tego linku https://alligator.io/angular/angular-6/
------------------- Bez kątowników -------------------------
Musisz więc ręcznie zaktualizować swój
package.json
plik.Następnie uruchomić
źródło
bash: rxjs-5-to-6-migrate: command not found
gdy próbuję uruchomić polecenie rxjs-5-to-6-migrate. jakieś pomysły?Jak zauważył Vinay Kumar, nie zaktualizuje on globalnie zainstalowanego interfejsu CLI Angulara. Aby zaktualizować go globalnie, użyj następujących poleceń:
Zauważ, że jeśli chcesz zaktualizować istniejący projekt, musisz zmodyfikować istniejący projekt, powinieneś zmienić package.json w swoim projekcie.
Nie ma żadnych istotnych zmian w samym Angular, ale są one w RxJS, więc nie zapomnij użyć biblioteki rxjs-Compatible do pracy ze starszym kodem.
Napisałem dobry artykuł o instalacji / aktualizacji Angular CLI http://bmnteam.com/angular-cli-installation/
źródło
po prostu uruchom następujące polecenie:
ng update
Uwaga: to nie zaktualizuje się globalnie.
źródło
Tak to robię.
Moje środowisko:
Angular CLI Global: 6.0.0, Local: 1.7.4, Angular: 5.2, Typescript 2.5.3
ng update //update Angular Package core/common/complier... to 6.0.0
ng update @angular/cli //change angular-cli.json to angular.json
opcjonalnie, jeśli masz angular-material 5.4.2, ngx-translate 9.1.1, ng-bootstrap / ng-bootstrap 1.1.1:
ng update @angular/material //upgrade to 6.0.1
npm install @ngx-translate/[email protected] --save //upgrade ngX translate to 10.0.1 for Angular 6
5
npm install --save @ng-bootstrap/[email protected] //for ng-bootstrap
Jeśli używasz Observable i otrzymujesz błąd:
ERROR in node_modules/rxjs/Observable.d.ts(1,15): error TS2307: Cannot find module 'rxjs-compat/Observable'. node_modules/rxjs/observable/of.d.ts(1,15): error TS2307: Cannot find module 'rxjs-compat/observable/of'.
Zmiana:
import { Observable } from "rxjs/Observable"; import { of } from 'rxjs/observable/of';
Do
import { Observable, of } from "rxjs";
Problem z Angular CLI: https://github.com/angular/angular-cli/issues/10621
źródło
Istnieje kilka kroków, aby zaktualizować 2/4/5 do Angular 6.
Aby rozwiązać problem związany z plikiem „angular.json”: -
MIGRACJA sklepu
https://github.com/ngrx/platform/blob/master/MIGRATION.md#ngrxstore
MIGRACJA RXJS
https://www.academind.com/learn/javascript/rxjs-6-what-changed/
Mam nadzieję, że to ci pomoże :)
źródło