如何将Angular CLI升级到最新版本


102

使用ng --version我得到:

@角度/ cli:1.0.0

这不是可用的最新版本。

由于我的系统上全局安装了Angular CLI,因此为了进行升级,我尝试了以下操作:

npm update angular-cli -g

但是它不起作用,因为它保持为1.0.0版本。

Answers:


829

阅读了GitHub存储库上报告的一些问题后,我找到了解决方案。

为了更新系统中全局安装的angular-cli软件包,您需要运行:

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

根据您的系统,您可能需要在上面的命令前面加上sudo

另外,最有可能您还想更新本地项目版本,因为在项目目录中,它的优先级高于全局目录:

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

感谢grizzm0GitHub上指出这一点。

更新CLI后,您可能也想更新Angular版本

注意:如果要从较早的版本更新到Angular CLI 6+,则可能需要阅读this

编辑:此外,如果您仍在cli的1.x版本上,则需要将转换angular-cli.jsonangular.json,您可以使用以下命令执行此操作:

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

(请检查以获取更多详细信息)。


3
Pedantic警告:您可以在GitHub的Releases标签中找到有关版本之间更改的更多详细信息。链接:github.com/angular/angular-cli/releases
Stuti Verma

14
更新2017(npm @ 5):如果您确实需要清理缓存:“ npm cache clean --force”
Neyt

2
为什么要卸载angular-cli而不是整个@ angular / cli?
YASH DAVE

4
运行命令npm cache clean会引发错误'从npm @ 5开始,npm缓存会因损坏问题而自我修复,并且保证从缓存中提取的数据是有效的。如果要确保所有内容都一致,请改用“ npm缓存验证”。“如果要强制,则可以添加--force
Pushkal Boganatham

1
@PushkalBoganatham如@neyt所述,您需要使用--force标志
svict4

149

ng6 +-> 7.0

更新RxJS(取决于RxJS 6.3)

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

去掉 rxjs-compat

然后更新核心软件包和Cli:

ng update @angular/cli @angular/core

(可选:将Node.js更新到NG7支持的版本10)

ng6 +(Cli 6.0+):功能简化的命令

首先,更新您的Cli

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

然后,更新您的核心软件包

ng update @angular/core

如果使用RxJS,请运行

ng update rxjs

它将RxJS更新到版本6,并在后台安装该rxjs-compat软件包。

如果遇到构建错误,请尝试手动安装:

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

最后,检查您的版本

ng v

关于生产版本的注意事项:

NG6不再使用intlpolyfills.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

注意:

  1. 撰写本文时,Cli 1.6支持的Typescript版本最高为2.5.3。
  2. 使用@next将软件包更新为beta(如果有)。使用@latest获取最新的非beta版本。

在更新了全局和本地程序包之后,请清除缓存以避免错误:

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

以下是官方参考:

  1. 更新Cli
  2. 更新核心软件包核心软件包

4
npm cache clean --force 真的帮了我
Pini Cheyni

1
为什么哦,为什么发行说明中没有这个部分!
德雷奈

您能否确认关于不赞成使用RxJS 6的说法。我所到之处似乎都看到v6是最新的稳定版本github.com/ReactiveX/rxjs rxjs-dev.firebaseapp.com
Joey Gough

1
@JoeyGough不错!Ng7取决于rxjs 6.3。谢谢你的评论。参考: github.com/angular/angular/blob/master/...
Pageii工作室

107

你可以简单地使用

npm install -g angular-cli -如果是第一次

npm install -g @angular/cli@latest -如果您已经安装,请更新


37

功能强大的命令将安装并替换最后一个软件包。

我有一个类似的问题。我修好了它。

 npm install -g @angular/cli@latest

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

在此处输入图片说明


这将适用于本地Angular CLI,请查看我的回答以改写全球性CLI
Francesco Borzi

升级了我的全球cli
Rahmathullah M


22

以下方法对我有用:

npm uninstall -g @angular/cli

然后

npm cache verify

然后

npm install -g @angular/cli@latest

我在Windows 10上工作,有时还必须使用:npm cache clean --force。如果在安装过程中没有任何问题,则无需执行任何操作。


2
您无需指定@latest,因为default是默认值。
Ambroise Rabier

如果该解决方案不适合您:stackoverflow.com/a/58678941/8718377
veben

17

如果您在管理全局CLI版本时遇到任何困难,最好使用NVM:MACWindows

要在Angular项目中更新本地CLI,请按照以下步骤操作:

CLI v6开始,您可以运行ng update以将依赖项自动更新到新版本。

ng update @angular/cli

随着ng update有时你可能需要添加--force标志。

您还可以传递--all标志以同时升级所有软件包。

ng update --all --force

如果只想迁移CLI,请运行以下命令:

ng update @angular/cli --migrateOnly

您还可以传递--from=from要从其迁移的标记版本,例如--from=1.7.4。仅当要更新的单个程序包时才可用此标志,并且仅在迁移时才可用。

更新完成后,请确保当前角度版本支持已安装的打字稿版本,否则,您可能需要降级打字稿版本。还请记住,通常angular的最新版本将不支持打字稿的最新版本。

在此处签出Angular CLI / Angular / NodeJS / Typescript兼容版本

请查看本指南更新您的Angular项目update.angular.io


老答案:
您需要做的就是使用angular-cli-diff进行差异化并将更改应用到当前项目中。

步骤如下:

  1. 假设您从1.4开始。到1.5,然后您执行https://github.com/cexbrayat/angular-cli-diff/compare/1.4.0...1.5.0
  2. 点击File changed标签
  3. 将更改应用到当前项目。
  4. npm install / yarn
  5. 测试全部npm scripts更多详细信息,在这里: https : //stackoverflow.com/a/45431592/415078

14

除了@ShinDarth答案

我照他说的做了,但是我的包裹没有更新有角度的版本,而且我知道这篇文章是关于的angular-cli,但是我认为这也可以提供帮助。

  • 因此,按照上面@ShinDarth的说明进行操作之后,要修复我的角度版本,我必须使用-ng new projectname生成的包创建一个新项目。
  • 复制新程序包,然后将新程序包粘贴到所有需要更新的项目程序包中(请记住要添加您具有的依赖项并在第一行上更改名称),或者您可以手动更改版本而无需复制和粘贴。
  • 然后运行-npm install

现在,我ng serve又在工作,也许有更好的方法来完成所有这些工作,如果有人知道,请分享,因为对于所有需要更新的项目来说这很痛苦。


看起来比答案更像是对我的答案的补充,因此也许您可以将其作为评论移至我的答案下方?
Francesco Borzi

7
对不起,您是对的,但我需要50的声誉才能对您的回答作出评论。
莱昂纳多·索扎·帕瓦(Baron Leonard),

9

要将Angular CLI更新到新版本,必须同时更新全局软件包和项目的本地软件包。

全球套餐:

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

本地项目包:

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

资料来源:Github


3

就我而言,我已经使用npm install --save-dev angular-cli在本地安装了angular-cli。因此,当我使用命令npm install -g @ angular / cli时,它会产生错误,指出“您的全局Angular CLI版本(1.7.3)大于本地版本(1.4.9)”。请注意,angular-cli,@ angular / cli和@ angular / cli @ latest是两个不同的cli。解决此问题的方法是卸载所有cli,然后使用npm install -g @ angular / cli @ latest安装最新的angular cli。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.