当运行ng serve时,我得到一个关于我的全局CLI版本大于本地版本的警告。我没有注意到这个警告有任何问题,但我想知道两个版本是否应该同步?另外,如果你有一个全局版本,是否有必要有一个本地版本?

警告:

你的Angular CLI全局版本(1.1.1)比你的本地版本(1.0.6)更高。使用的是Angular CLI的本地版本。


当前回答

如果你升级了你的Angular版本,你需要改变Angular的版本

@angular-devkit/build-angular

在你

package.json

从旧版本升级到新的angular构建版本。

我已经升级到Angular 10,所以我需要转到 https://www.npmjs.com/package/@angular-devkit/build-angular 并根据Angular 10检查哪个是我的版本。

在我的情况下,我发现版本需要0.1001.7,所以我在我的包中把我的旧版本换成了这个版本。Json,然后运行

npm --save install

这就够了。

其他回答

首先通过运行找到angular-cli的全局版本

ng --version

上面的代码将显示angular-cli的全局版本和本地版本。

如果你想要全局和局部的angular cli是一样的,你可以这样做

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

你的angular-cli的全局版本是1.7.4

然后如果你运行ng serve,打开你的代码就会运行。

我这样做了,而且成功了

NPM ng install /config——save-dev -dev @angular/cli@latest @angular-devkit/build-angular -global -g @angular/cli@latest

还有另一种方法可以避免全局安装以创建新应用程序。 就我而言,我使用的是Angular 9,但客户需要的是Angular 8。

# create an empty directories
mkdir angular-8-cli
mkdir my-angular-8-project

# init empty npm project
cd angular-8-cli
npm init -y

# install local angular 8 cli
npm i @angular/cli@8

# go to your angular 8 project
cd ../my-angular-8-project

# use previously installed angular 8 cli to create a new angular 8 project
../angular-8-cli/node_modules/.bin/ng new my-angular-8-project --directory=.

//安装NPM检查更新

npm i -g npm -check-updates

//执行npm-check-updates

npm -u

//你应该得到一个列表,上面是所有要更新到最新版本的包

//按照提示安装更新后的包

npm install

要回答其中一个问题,必须同时进行全局和本地安装,以便工具能够工作。

如果您尝试在没有CLI本地安装(仅限全局安装)的应用程序上运行ng serve,您将得到以下错误。

你必须在Angular CLI项目中才能使用serve命令。

它还将打印以下消息:

Please take the following steps to avoid issues:
"npm install --save-dev @angular/cli@latest"

运行npm命令在本地更新命令行,并避免您所得到的警告。

其他问题:看起来它们不需要同步,但是为了避免工具的任何不寻常行为,或者工具生成的代码的任何不一致,最好是同步。

为什么我们同时需要全局安装和本地安装?

启动新应用程序需要全局安装。ng new <app-name>命令在CLI全局安装环境下执行。事实上,如果你试图在现有CLI应用程序的文件夹结构中运行ng new while,你会得到这个可爱的错误:

你不能在Angular CLI项目中使用new命令。

其他可以在全局安装中运行的命令有ng help、带——global选项的ng get/set、ng version、ng doc和ng completion。

CLI的本地安装是在构建应用程序之后使用的。这样,当CLI的新版本可用时,您可以更新全局安装,而不会影响本地安装。这有利于项目的稳定性。大多数ng命令只适用于本地版本,比如lint、build和serve等。

根据CLI GitHub自述,要更新CLI,必须更新全局和本地包。但是,到目前为止,我已经使用了CLI,其中全局和本地版本不同,没有任何问题。如果我遇到过与全局和本地CLI版本不同步相关的错误,我会在这里发布。