2017-03-28 34 views
5

Obecnie aplikacja działa w wersji Angular 2.0.0. Jakie są pakiety lub zależności, które należy zmienić w celu zapewnienia zgodności z Angular 4? tej pory mam zmieniać następujące,Zmiany w pakiecie package.json dla migracji od Angula 2 do 4

"dependencies": { 
"@angular/common": "4.0.0", 
"@angular/compiler": "4.0.0", 
"@angular/core": "4.0.0", 
"@angular/forms": "4.0.0", 
"@angular/http": "4.0.0", 
"@angular/platform-browser": "4.0.0", 
"@angular/platform-browser-dynamic": "4.0.0", 
"@angular/router": "4.0.0", 
"@angular/router-deprecated": "2.0.0-rc.2", 
"@angular/upgrade": "4.0.0", 
"angular2-toaster": "2.0.0", 
"rxjs": "^5.0.1", 
"typescript": "^2.1.5", 
"zone.js": "^0.8.4" 
} 

Czy są jakieś inne pakiety/Zależności, które należy zmienić?

Czy należy wprowadzić zmiany w tsconfig.json?

{ 


"compilerOptions": { 
    "target": "es5", 
    "module": "commonjs", 
    "lib": [ 
     "es5", 
     "es2015", 
     "es2017", 
     "dom", 
     "scripthost" 
    ], 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "sourceMap": true, 
    "noEmitHelpers": true, 
    "allowNonTsExtensions" : true 
    }, 
    "exclude": [ 
    "node_modules", 
    "typings/main.d.ts", 
    "typings/main" 
    ], 
    "filesGlob": [ 
    "./src/**/*.ts", 
    "./test/**/*.ts", 
    "!./node_modules/**/*.ts", 
    "src/custom_typings.d.ts", 
    "typings/browser.d.ts" 
    ], 
    "awesomeTypescriptLoaderOptions": { 
    "resolveGlobs": true, 
    "forkChecker": true 
    }, 
    "compileOnSave": false, 
    "buildOnSave": false, 
    "atom": { "rewriteTsconfig": false } 
} 

Odpowiedz

0

Nie należy wprowadzać zmian w ts.config. Zmiany, które wprowadziłeś w pliku package.json, wydają się poprawne.

Kilka punktów:

  • myślę „maszynopis” powinno być w „devDependencies”, ponieważ nie trzeba będzie, że w trybie prod.
  • Polecam usunięcie "^" ze wszystkich zależności b.c. lepiej jest zablokować dokładną wersję
  • Gorąco polecam używanie "shrinkwrap", aby uniknąć luźnych zależności w zależnościach.

Aby zainstalować najnowszą wersję Angular, usuń/przenieś bieżący folder node_modules. Następnie:

npm cache clean 
npm install 

Dla porównania, patrz rozdział „Aktualizacja do 4.0.0” http://angularjs.blogspot.com/2017/03/angular-400-now-available.html

1

normalnie używać plików tu orientacyjna: https://github.com/angular/quickstart

Zapewnia zestaw podstawowych plików nasiennych potrzebne do wniosku i zwykle jest aktualizowany z Angular, ponieważ jest częścią Angular docs at angle.io.

0

Nie musisz dokonać zmian w pliku package.json ręcznie można uruchomić tego polecenia, jeśli używasz systemu Windows

npm cache clean 

npm install @angular/[email protected] @angular/[email protected] @angular/[email protected] @angular/[email protected] @angular/[email protected] @angular/[email protected] @angular/[email protected] @angular/[email protected] @angular/[email protected] @angular/[email protected] @angular/[email protected] --save 

Pomoże to

Po skomentować

należy zaktualizować Twój maszynopis, a także może spróbować zmienić to w tsconfig.json

{ 
    "compilerOptions": { 
     "target": "es5", 
     "lib": ["es2016", "dom"] //or es6 instead of es2016(es7) 
    } 
} 
+0

użyłem okna poleceń, aby uaktualnić pakiety, ale widzę błędy w 'vendor.ts' i' 'main.browser.ts' błąd w ./src/vendor. ts Błąd wykonania modułu: Błąd: Błąd w debugowaniu. Fałszywe wyrażenie: Plik ma nieznane rozszerzenie. ' ' BŁĄD w [default] node_modules/@angular/core/src/change_detection/diffection/iterable_differs.d.ts: 15: 47 Nie można znaleźć nazwy "Iterable'." – user3344978

+0

@ user3344978 Czy masz zainstalowaną najnowszą maszynę do pisania, ponieważ Angular4 używa wersji 2.1. –

+0

Próbowałem z maszynopisem @ ostatni, a także z [email protected] Ale obie wersje dały mi ten błąd "/node_modules/bootstrap-loader/loader.js" ma nieobsługiwane rozszerzenie. Jedynymi obsługiwanymi rozszerzeniami są '.ts', '.tsx', '.d.ts'., – user3344978

0

Moje rozwiązanie w takich sytuacjach polega na użyciu polecenia kątowego-cli w celu utworzenia nowego projektu w wymaganej wersji kątowej (prawie zawsze jest to najnowsza wersja dla mnie), a następnie dodania innych zależności, których potrzebuję, umożliwiając menedżerowi pakietów uporządkowanie jaką wersję powinienem mieć lub potwierdzając moją opinię na ten temat za pomocą opcji poleceń menedżera pakietów.

To pozwala mi szybko zbudować bibliotekę dostawców i szybko przetestować, że wszystko zostanie załadowane bezbłędnie za pomocą "aplikacji działa!" projekt, który zapewnia cli.

Po zakończeniu tego procesu powinieneś mieć plik package.json, który możesz po prostu wyciąć i wkleić sekcje zależności w projekcie.

Jeszcze jedna rzecz, na którą należy zwrócić uwagę, jeśli nie ... Przędza. Yarn jest nowszym menedżerem pakietów od naszych znajomych na Facebooku. Jest nowszy, a więc mniej przetestowany niż npm, ale ma kilka naprawdę fajnych funkcji i przynajmniej w moim setupie działa około 20 razy szybciej niż npm. Inny producent wspomniał o shrinkwrap, które jest świetnym narzędziem, więc pomyślałem, że wskażę inne rozwiązanie w tej dziedzinie.

+0

Czy należy przekonwertować mój bieżący projekt, aby działał przy użyciu cli, aby uzyskać odpowiednie wersje? Czy powinienem stworzyć zupełnie nowy projekt testowy? – user3344978

+0

Generalnie wystarczy utworzyć nowy projekt testowy, aby określić poprawną kombinację wersji zależności. – IndyWill

+0

Spróbuję też. Dzięki ręcznej zmianie przyrostowej otrzymuję następujący błąd w '4.0.0-beta.6' ' @wykluczone \ core \ src \ change_detection \ differs \ iterable_differs.d.ts: 14: TS2304 Nie można znaleźć nazwy "Iterable". Próbowałem postępować zgodnie z sugestiami podanymi w [this] (http://stackoverflow.com/questions/42347142/angular4-what-definition-of-itersable-should-i-use) pytanie na stackoverflow, ale nie pomogło. – user3344978

1

Oto miły youtube film, który wyjaśnia, jak Migrate Angular 2 to Angular 4

Pozwól mi podsumować to, co powiedział w filmie. Migracja z Angular 2 na Angular 4 to proces trójstopniowy.

  1. Usuń stary folder "node_modules", ponieważ ma odniesienia do Angular 2.X.

  2. Zmień wszystkie wersje @Angular z wersji 2.X na 4.X i wykonaj "instalację npm".

  3. Można uzyskać problemy równorzędne stwierdzające, że ta wersja nie jest zgodna z tą wersją. Popraw to, co mówi o tym błąd. Zobacz wideo, w jaki sposób poprawiono problemy z rówieśnikami.

  4. Uruchom projekt i wykonaj dokładny test.

enter image description here