【发布时间】:2017-12-23 12:24:52
【问题描述】:
这是一个简单的问题,但我很难通过 Google 找到答案...
我有一个 Angular 4 项目(使用 Angular cli 创建)并希望使用刚刚在 4.3 中发布的 http 拦截器。
如何使用 Angular cli 升级到这个次要版本?
【问题讨论】:
标签: javascript node.js angular npm angular-cli
这是一个简单的问题,但我很难通过 Google 找到答案...
我有一个 Angular 4 项目(使用 Angular cli 创建)并希望使用刚刚在 4.3 中发布的 http 拦截器。
如何使用 Angular cli 升级到这个次要版本?
【问题讨论】:
标签: javascript node.js angular npm angular-cli
在某些情况下,ng update 不会通过次要版本更新来更新 Angular 核心依赖项。
我遇到了一个尝试从 Angular 6.0.0 更新到 6.1.0 的案例,但没有成功。
我只通过以下步骤解决了这个问题:
删除项目node_modules目录
在package.json中手动更改所有角度核心依赖库:
common, compiler, compiler-cli, core, forms, http
platform-browser, platform-browser-dynamic, router
就像这里的最后 4 行:
"dependencies": {
"@agm/core": "~1.0.0-beta.3",
"@angular/animations": "^6.0.9",
"@angular/cdk": "^6.4.0",
"@angular/cli": "^6.2.9",
"@angular/common": "^6.1.x",
"@angular/core": "^6.1.x",
"@angular/forms": "^6.1.x",
"@angular/http": "^6.1.x",
在devdependencies 中也可以看到compiler, compiler-cli。
运行npm install 重建node_modules。
在此之后,我们得到了从 6.0.0 到 6.1.10 的 ng --version cli 命令的结果。
【讨论】:
主要版本角度更新应使用ng update。
npm update 用于更新 Angular 次要/补丁版本有一个缺点:它还会更新其他不相关的包。
您可以使用 npm-check-updates 仅更新特定软件包,并且可以选择针对补丁/次要/主要版本。
此命令将更新所有 Angular 包的次要(和补丁)版本(但会保留主要版本):
npx npm-check-updates --upgrade --target "minor" --filter "/@angular.*/"
该命令为您提供新版本的预览并相应地更新 package.json:
之后你可以运行npm install。
【讨论】:
在我的 Angular CLI 项目中,我使用 npm update 来更新我的依赖项。使用npm outdated,您可以查看所有过时的依赖项。
如果您使用的是 Angular CLI 版本 6+,则可以使用新的 ng update <packagename> 命令更新您的依赖项。
⚠️ 这将更新到最新的 主要 版本。如果你不想坚持npm update。 ⚠️
https://angular.io/guide/updating
对于简单的更新,您只需要 CLI 命令
ng update。在没有其他参数的情况下,ng update列出了可供您使用的更新,并提供了将您的应用程序更新到最新版本的推荐步骤。
【讨论】:
npm update 并确保您的package.json 中有相应的版本范围:请参阅docs.npmjs.com/misc/semver#caret-ranges-123-025-004