如何通过ng update将Angular 7更新为Angular 8

时间:2019-05-27 11:39:12

标签: angular angular-cli angular-upgrade

我尝试通过在终端中运行ng update @angular/cli @angular/core将Angular项目从7.2.5版本更新到核心框架和CLI的8。

终端的回复是“我们分析了您的package.json,一切似乎都井然有序。干得好!'

我的版本列表:

$ ng version

     _                      _                 ____ _     ___
    / \   _ __   __ _ _   _| | __ _ _ __     / ___| |   |_ _|
   / △ \ | '_ \ / _` | | | | |/ _` | '__|   | |   | |    | |
  / ___ \| | | | (_| | |_| | | (_| | |      | |___| |___ | |
 /_/   \_\_| |_|\__, |\__,_|_|\__,_|_|       \____|_____|___|
                |___/


Angular CLI: 7.3.9
Node: 11.14.0
OS: darwin x64
Angular: 7.2.15
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router

Package                            Version
------------------------------------------------------------
@angular-devkit/architect          0.13.9
@angular-devkit/build-angular      0.13.9
@angular-devkit/build-ng-packagr   0.13.9
@angular-devkit/build-optimizer    0.13.9
@angular-devkit/build-webpack      0.13.9
@angular-devkit/core               7.3.9
@angular-devkit/schematics         7.3.9
@angular/cdk                       7.3.7
@angular/cli                       7.3.9
@angular/material                  7.3.7
@ngtools/json-schema               1.1.0
@ngtools/webpack                   7.3.9
@schematics/angular                7.3.9 (cli-only)
@schematics/update                 0.13.9
ng-packagr                         5.2.0
rxjs                               6.5.2
typescript                         3.2.4
webpack                            4.29.0

6 个答案:

答案 0 :(得分:3)

到目前为止,Angular 8尚未稳定。

但是,如果您真的希望更新不稳定版本,请在软件包名称的末尾使用 @next

ng更新@ angular / cli @ next @ angular / core @ next

答案 1 :(得分:2)

Angular团队使升级变得比以前容易得多。您可以使用《 Angular更新指南》获取将项目从Angular版本更新到另一个版本所需的命令。

转到该交互式指南,将7.1.4指定为当前版本,将目标版本指定为v8.3.2,然后单击向我显示如何更新按钮

指定版本后,您会收到一条警告,提示我们建议您不要跨多个主要版本进行迁移。由于我们正在从v7迁移到v8:

Angular 8使用TypeScript 3.4 read more about errors that might arise from improved type checking

确保您使用的是Node 10 or later

在您的命令行界面中,运行以下命令:

provider = "<name>"

这将分析项目的provider "aws" { region = "us-east-2a" } resource "aws_instance" "my_instance" { ami = "ami-0d542ef84ec55d71c" instance_type = "t2.micro" tags { name="terraform" } } 文件,并为您提供要使用所需命令进行更新的软件包列表:

$ ng update

因此,让我们首先使用以下命令将核心框架和CLI分别更新为 v8.2.14 v8.3.19

package.json

这会将核心框架和CLI更新为Angular 8:

    We analyzed your package.json, there are some packages to update:

      Name                               Version                  Command to update
     --------------------------------------------------------------------------------
      @angular/cli                       7.1.4 -> 8.3.19          ng update @angular/cli
      @angular/core                      7.1.4 -> 8.2.14          ng update @angular/core
      rxjs                               6.3.3 -> 6.5.3           ng update rxjs


    There might be additional packages that are outdated.
    Run "ng update --all" to try to update all at the same time.

注意:在Windows上,我必须在$ ng update @angular/cli @angular/core 之后运行 Updating package.json with dependency @angular/compiler @ "8.2.14" (was "7.1.4")... Updating package.json with dependency @angular/language-service @ "8.2.14" (was "7.1.4")... Updating package.json with dependency @angular/forms @ "8.2.14" (was "7.1.4")... Updating package.json with dependency @angular/platform-browser @ "8.2.14" (was "7.1.4")... Updating package.json with dependency @angular/platform-browser-dynamic @ "8.2.14" (was "7.1.4")... Updating package.json with dependency @angular/cli @ "8.3.19" (was "7.1.4")... Updating package.json with dependency @angular/animations @ "8.2.14" (was "7.1.4")... Updating package.json with dependency @angular/common @ "8.2.14" (was "7.1.4")... Updating package.json with dependency zone.js @ "0.9.1" (was "0.8.26")... Updating package.json with dependency rxjs @ "6.5.3" (was "6.3.3")... Updating package.json with dependency @angular/router @ "8.2.14" (was "7.1.4")... Updating package.json with dependency @angular/core @ "8.2.14" (was "7.1.4")... Updating package.json with dependency @angular/compiler-cli @ "8.2.14" (was "7.1.4")... Updating package.json with dependency typescript @ "3.5.3" (was "3.1.6")... 才能安装依赖关系的新版本。

现在,让我们使用以下命令检查Angular的新版本:

npm install

这是命令的输出:

ng update @angular/cli @angular/core

您可以看到我们已成功将Angular CLI更新到 v8.3.19 ,将Angular更新到 v8.2.14 ,并更新了其他核心软件包。甚至TypeScript也被撞到 v3.5.3

我从这个update guide和这个official post那里得到了这些指示

答案 2 :(得分:1)

到目前为止,它已经稳定8.0.0 :)

您可能想尝试运行ng update --all来更新package.json文件中的所有软件包。 但是,如果发现其他软件包之间不满足某些相互依赖性,则可能无法继续进行。 在这种情况下,您可能还需要添加--force选项。

或者,您可以选择一种更定制的方法和手动选择的软件包进行更新(如Veeraragavan的回答所建议),但是您无需再添加@next版本,因为所有Angular软件包都是8.0.0版本到现在为止都很稳定。

答案 3 :(得分:0)

除了有关ng update命令的其他答案之外,请注意,Angular 7和8版本之间还有一些重大更改,需要引起注意。

尤其是:

  
      
  • 如果您使用旧版HttpModuleHttp服务,请切换到   HttpClientModuleHttpClient服务。 HttpClient简化了   默认的人体工程学(不再需要映射到JSON),现在   支持类型化的返回值和拦截器。阅读更多   angular.io
  •   
  • 确保您使用的是Node 10 or later
  •   

Angular在其Angular Update Guide中详细描述了此过程。

答案 4 :(得分:0)

如果您重复

  

ng更新@ angular / cli @ angular / core

它将升级到下一步,即8

答案 5 :(得分:0)

通过运行

升级到核心框架和CLI的版本8。

ng update @angular/cli@8 @angular/core@8在您的终端上