有没有办法用 ng new 命令指定角度版本

Posted

技术标签:

【中文标题】有没有办法用 ng new 命令指定角度版本【英文标题】:Is there a way to specify angular version with the ng new command 【发布时间】:2019-10-29 02:43:07 【问题描述】:

我正在创建一个新的 Angular 项目,并希望所有 Angular 依赖项都来自稳定的第 7 版。然而,似乎在运行ng new app 命令时,Angular 总是获取最新版本。我的 package.json 显示了来自~8.0.0 的所有 Angular 包,如核心、动画等。

我知道我可以修改 package.json 并将这些依赖项设置为按照语义 7.xx 获取,但我希望它自动完成,这样我就不会遇到不匹配的机会任何对等依赖项。

那么,有没有一种方法可以告诉 CLI 获取特定的 Angular 版本以及根据该 Angular 版本获取的所有依赖项。

编辑:我已经尝试过安装@angular/cli@7.x.x。即使在执行此操作后,如果我运行新应用程序,我的依赖项也会按照第 8 版获取

【问题讨论】:

【参考方案1】:

可以通过使用npx 命令下载并运行包而不安装它来完成。

例如,npx @angular/cli@9 new my-project 在当前文件夹中创建一个新文件夹 my-project,并使用 Angular 版本 9 将新项目放在这里。在这种情况下,@angular/cli 的本地版本将与 @987654325 中使用的相同@ 命令,这样你就可以继续工作了。

该命令的语法如下npx @angular/cli@<package version> new <project-name>

【讨论】:

这里没有按预期工作。似乎 npx 正在获取全局安装的 angular cli 版本的版本。删除全局 angular cli (npm uninstall -g @angular/cli) 时,npx 命令可以正常工作并安装指定的版本。 @spierala,如果您没有通过在软件包名称后添加 @<version> 来指定您想要的版本,它会选择您全局安装的版本。这就是为什么我将@9 放在我的答案中。 我又试了一次......它在任何情况下都需要使用 Windows Power Shell(在 IntelliJ 中)的全局版本,但它工作正常,例如在 Git Bash 中。以后我会使用 Git Bash :)【参考方案2】:

您也可以在本地安装 angular CLI...让我们在 /my-folder 中说:

在我的文件夹中运行: npm i @angular/cli

这将安装 CLI 的最新可用版本,但您可以安装任何现有版本(例如 npm i @angular/cli@8.x

当 npm 安装完成后,Angular CLI 将出现在此处: /my-folder/node_modules/@angular/cli

在我的文件夹中你可以运行ng new my-project

这将在这里创建一个新的 Angular 项目: /我的文件夹/我的项目

新项目的 Angular 版本将与本地 CLI 版本匹配。

最后你应该删除 /my-folder/node_modules 它不再需要了。

ng 命令将默认使用本地 Angular CLI(在本例中位于 /my-folder/node_modules 内)。如果没有本地 CLI,则将使用全局 CLI。

【讨论】:

【参考方案3】:

没有办法告诉 Angular CLI 你要安装的特定 Angular 版本。相反,您可以切换到另一个版本的 Angular CLI,然后创建 Angular 项目。

首先运行这些命令:

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

安装好之后就可以运行了:

ng new angular7

这将创建具有正确依赖项的 Angular 7 项目:

"@angular/animations": "~7.1.0",
"@angular/common": "~7.1.0",
"@angular/compiler": "~7.1.0",
"@angular/core": "~7.1.0",
"@angular/forms": "~7.1.0"

【讨论】:

大多数人在执行上述操作之前需要运行npm uninstall -g @angular/cli 正如我在答案中提到的,我已经在本地尝试过。但是,我将使用 -g 再次尝试并卸载,如果它适合我​​,我会更新。 在我卸载以前的版本时工作。谢谢。但是,我认为如果可以使用ng new 命令提供版本参数会更好。

以上是关于有没有办法用 ng new 命令指定角度版本的主要内容,如果未能解决你的问题,请参考以下文章

ng --version 显示错误的角度版本

ng serve 命令不起作用 角度 5

有没有办法让我的组件在角度上完全可重用?

如何在创建离子应用程序时指定角度版本

没有 ng-repeat 的角度过滤器列表

角度依赖注入 - 使用T?