正如Angular 6在这里一样,我想将我的angular 5客户端应用程序升级或移动到angular 6,但是我没有任何教程或任何可以指导我的教程。
据我说,我只需要运行一个新的Angular CLI,然后将旧的源代码移到新项目中即可。我读到Angular 6正在使用一个名为Ivy的新渲染器。我是否需要根据常春藤更改项目?
正如Angular 6在这里一样,我想将我的angular 5客户端应用程序升级或移动到angular 6,但是我没有任何教程或任何可以指导我的教程。
据我说,我只需要运行一个新的Angular CLI,然后将旧的源代码移到新项目中即可。我读到Angular 6正在使用一个名为Ivy的新渲染器。我是否需要根据常春藤更改项目?
Answers:
Angular的第7版已发布Angular官方博客链接。有关详细信息,请访问官方角度更新指南https://update.angular.io。这些步骤适用于使用Angular Material的基本angular 6应用程序。
ng update @angular/cli
ng update @angular/core
ng update @angular/material
Angular的第6版已发布Angular官方博客链接。我在下面提到了一般的升级步骤,但是在更新之前和之后,您需要更改代码以使其在v6中可用,有关详细信息,请访问官方网站https://update.angular.io。
升级步骤(主要取自官方Angular更新指南,适用于使用Angular Material的基本Angular应用程序):
如果不更新,请确保NodeJS版本为8.9+。
全局和本地更新Angular cli,并通过运行以下命令将旧配置.angular-cli.json迁移为新的angular.json格式:
npm install -g @angular/cli
npm install @angular/cli
ng update @angular/cli
通过运行以下命令,将所有Angular框架软件包更新到v6,以及正确版本的RxJS和TypeScript:
ng update @angular/core
通过运行以下命令将Angular Material更新到最新版本:
ng update @angular/material
RxJS v6与v5相比有重大变化,v6带来了向后兼容的软件包rxjs-compat,可使您的应用程序正常运行,但是您应该重构TypeScript代码,以使其不依赖于rxjs-compat。要重构TypeScript代码,请运行以下命令:
npm install -g rxjs-tslint
rxjs-5-to-6-migrate -p src/tsconfig.app.json
注意:一旦所有依赖项都更新到RxJS 6,请删除rxjs-compat,因为它会增加包的大小。请参阅此RxJS升级指南以获取更多信息。
npm uninstall rxjs-compat
做完ng serve
检查。
如果您在构建时遇到错误,请参阅https://update.angular.io以获取详细信息。
将rxjs升级到6.0.0-beta.0,请参阅此RxJS升级指南以获取更多信息。RxJS v6具有重大变化,因此请首先使您的代码与最新RxJS版本兼容。
将NodeJS版本更新为8.9+(Angular CLI 6版本需要此功能)
将Angular cli全局软件包更新为下一版本。
npm uninstall -g @angular/cli
npm cache verify
如果npm版本小于5,则使用 npm cache clean
npm install -g @angular/cli@next
将package.json文件中的角度软件包版本更改为 ^6.0.0-rc.5
"dependencies": {
"@angular/animations": "^6.0.0-rc.5",
"@angular/cdk": "^6.0.0-rc.12",
"@angular/common": "^6.0.0-rc.5",
"@angular/compiler": "^6.0.0-rc.5",
"@angular/core": "^6.0.0-rc.5",
"@angular/forms": "^6.0.0-rc.5",
"@angular/http": "^6.0.0-rc.5",
"@angular/material": "^6.0.0-rc.12",
"@angular/platform-browser": "^6.0.0-rc.5",
"@angular/platform-browser-dynamic": "^6.0.0-rc.5",
"@angular/router": "^6.0.0-rc.5",
"core-js": "^2.5.5",
"karma-jasmine": "^1.1.1",
"rxjs": "^6.0.0-uncanny-rc.7",
"rxjs-compat": "^6.0.0-uncanny-rc.7",
"zone.js": "^0.8.26"
},
"devDependencies": {
"@angular-devkit/build-angular": "~0.5.0",
"@angular/cli": "^6.0.0-rc.5",
"@angular/compiler-cli": "^6.0.0-rc.5",
"@types/jasmine": "2.5.38",
"@types/node": "~8.9.4",
"codelyzer": "~4.1.0",
"jasmine-core": "~2.5.2",
"jasmine-spec-reporter": "~3.2.0",
"karma": "~1.4.1",
"karma-chrome-launcher": "~2.0.0",
"karma-cli": "~1.0.1",
"karma-coverage-istanbul-reporter": "^0.2.0",
"karma-jasmine": "~1.1.0",
"karma-jasmine-html-reporter": "^0.2.2",
"postcss-loader": "^2.1.4",
"protractor": "~5.1.0",
"ts-node": "~5.0.0",
"tslint": "~5.9.1",
"typescript": "^2.7.2"
}
下次将Angular cli本地软件包更新为下一版本,并安装上述软件包。
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@next
npm install
Angular CLI配置格式已从angular cli 6.0.0-rc.2版本更改,并且可以通过运行以下命令来自动更新现有配置。它将删除旧的配置文件.angular-cli.json并将写入新的angular.json文件。
ng update @angular/cli --migrate-only --from=1.7.4
注意:-如果出现以下错误“ Angular Compiler需要TypeScript> = 2.7.2和<2.8.0,但是找到了2.8.3”。运行以下命令:
npm install typescript@2.7.2
bash: rxjs-5-to-6-migrate: command not found
。有什么想法吗?
ng update @angular/core
在离子项目文件夹中运行时,出现错误Invalid range: "*"
"@angular-devkit/build-angular"
从...中找到模块,因此已通过解决npm install @angular-devkit/build-angular --save-dev
。除此之外,我不得不更新使用以前rxjs-compat的,图书馆,喜欢ng update @ngx-translate/core
,ng update @ng-bootstrap/ng-bootstrap
因为他们几个没有被正确地更新。
Angular 6刚刚发布。
https://blog.angular.io/version-6-of-angular-now-available-cc56b0efa7a4
这是我的一个较小项目的工作原理
您可能需要在package.json中更新运行脚本,例如。如果您使用诸如“ app”和“ environment”之类的标记,则这些标记已分别更新为“ project”和“ configuration”。
请参阅https://update.angular.io/了解更多详细指南。
检查从Angular 5到Angular 6的逐步升级详细信息。这些详细信息提供了有关升级期间遇到的问题以及如何解决这些问题的详细信息。
{
"rulesDirectory": [
"node_modules/rxjs-tslint"
],
"rules": {
"rxjs-collapse-imports": true,
"rxjs-pipeable-operators-only": true,
"rxjs-no-static-observable-methods": true,
"rxjs-proper-imports": true
}
}
运营商名称变更:
do -> tap,
catch -> catchError,
switch -> switchAll,
finally -> finalize
所有运算符都移至rxjs / operators
import { map, filter, reduce } from 'rxjs/operators';
可观察的创建方法已移至rxjs
import { Observable, Subject, of, from } from 'rxjs';
你们都准备好了。欢迎来到Angular 6 :) 在这里查看我的博客文章有关如何升级
我必须重新运行ng update @ angular / cli才能将angular-cli.json更改为angular.json
使用NPM(确保节点版本为8+)
npm uninstall -g @angular/cli
npm cache clean
npm install -g @angular/cli@latest
npm i @angular/cli --save
使用纱线
yarn remove @angular/cli
yarn global add @angular/cli
yarn add @angular/cli
ng update @angular/cli
ng update @angular/core
ng update @angular/material
ng update rxjs
通常,这意味着您到处都要使用RxJS导入和运算符来更新代码,但值得庆幸的是,这里有一个软件包可以处理大多数繁重的工作:
npm i -g rxjs-tslint
//or using yarn
yarn global add rxjs-tslint
然后您可以运行rxjs-5-to-6-migrate
rxjs-5-to-6-migrate -p src/tsconfig.app.json
最终删除rxjs-compat
npm uninstall rxjs-compat
// or using Yarn
yarn remove rxjs-compat
请参阅此链接https://alligator.io/angular/angular-6/
因此,您必须手动更新package.json
文件。
然后跑
npm update
npm install --save rxjs-compat
npm i -g rxjs-tslint
rxjs-5-to-6-migrate -p src/tsconfig.app.json
bash: rxjs-5-to-6-migrate: command not found
在尝试运行rxjs-5-to-6-migrate命令时遇到问题。有什么想法吗?
正如Vinay Kumar指出的那样,它将不会更新全局安装的Angular CLI。要全局更新它,只需使用以下命令:
npm uninstall -g @angular/cli
npm cache clean
npm install -g @angular/cli@latest
注意,如果要更新现有项目,则必须修改现有项目,应在项目内部更改package.json。
Angular本身并没有重大变化,但它们在RxJS中,因此不要忘记使用rxjs-compat库来处理遗留代码。
npm install --save rxjs-compat
我写了一篇有关安装/更新Angular CLI的好文章,网址为http://bmnteam.com/angular-cli-installation/
只需运行以下命令:
ng update
注意:这不会全局更新。
这就是我的工作方式。
我的环境:
Angular CLI全局:6.0.0,本地:1.7.4,Angular:5.2,打字稿2.5.3
注意:要启用,
ng Update
您需要先安装Angular CLI 6.0npm install -g @angular/cli or npm install @angular/cli
ng update //update Angular Package core/common/complier... to 6.0.0
ng update @angular/cli //change angular-cli.json to angular.json
如果您有角材料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/core@10.0.1 --save //upgrade ngX translate to 10.0.1 for Angular 6
5 npm install --save @ng-bootstrap/ng-bootstrap@2.0.0 //for ng-bootstrap
如果使用Observable并收到错误:
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'.
更改: import { Observable } from "rxjs/Observable"; import { of } from 'rxjs/observable/of';
至
import { Observable, of } from "rxjs";
Angular CLI问题:https : //github.com/angular/angular-cli/issues/10621
有几个步骤可以将2/4/5升级到Angular 6。
npm uninstall --save-dev angular-cli
npm install --save-dev @angular/cli@latest
npm install
解决与“ angular.json”有关的问题:
ng update @angular/cli --migrate-only --from=1.7.4
储存MIGRATION
https://github.com/ngrx/platform/blob/master/MIGRATION.md#ngrxstore
RXJS迁移
https://www.academind.com/learn/javascript/rxjs-6-what-changed/
希望这对您有帮助:)