描述你遇到的问题
安装或升级Angular时遇到的问题:
- 全局安装Angular CLI
- 然后使用
ng new my-app
这两个步骤应该是一个,并且应该避免全局安装。
大多数其他框架都不需要全局安装。
输入出现问题的主题的URL
https://angular.io/guide/setup-local
描述你在文档中寻找的内容
设置Angular应用的更好且简单的方法
描述导致你遇到问题的行为
当你在本地将应用程序升级到新版本时:
你有一个本地CLI和一个全局CLI,版本不同。
当你在全局范围内运行ng命令时,会在命令行中看到关于版本差异的警告。
为了避免这个问题,我不得不删除全局CLI并安装与本地相同的新版本,这浪费时间且困难,因为有时很难删除全局深度,这可能因操作系统而异。
另一个问题也会出现,那就是当你还需要更新节点版本时,你同样需要全局安装CLI,这也是浪费时间。
描述你希望解决的问题,以便解决问题
不要依赖于全局CLI,通过避免全局安装来避免依赖。
从版本11开始,我使用npx
来设置新应用程序并运行命令生成组件等,
所以在文档中,不要遵循以下命令:npm install -g @angular/cli
和 ng new my-app
这个单一的命令就足够了:npx @angular/cli new my-app
有了这个,当新版本发布或更新节点版本时,就不需要全局安装/更新CLI了。
更新的重点应该是你正在工作的应用程序。
如果有截图可以说明问题,请添加
- 无响应*
如果这个问题导致了异常或错误,请在这里粘贴它
- 无响应*
如果问题是特定于浏览器的,请指定设备、操作系统、浏览器和版本
- 无响应*
尽可能详细地提供任何其他信息
- 无响应*
4条答案
按热度按时间w8rqjzmb1#
如果需要,可以使用以下命令禁用上述警告:
Angular确实提供了一个创建包的功能,用户可以使用它替代
npx
。示例:
npm
yarn
话虽如此,拥有全局CLI确实比仅使用本地版本提供一些优势,主要优点包括:
ng
命令rjjhvcjd2#
你好@alan-agius4,
当你与团队合作时,禁用警告不是一个选项。而且如果有新成员加入,我必须记住那个命令,这是浪费时间。正如我所说,全局CLI在更新节点或本地项目时很难管理。例如,你有一个本地版本为15的应用程序,而你的全局CLI版本为11,这里就会出现问题,因为你无法以独立的方式生成组件基础,因为不存在该标志。或者,如果你想创建一个新应用程序,而你的CLI版本为14或更低,你将无法使用独立标志创建新应用程序。这就是全局CLI的问题,你无法利用框架的新/最新功能。而且没有全局安装,你可以
npx ng
或npm run ng
,所以ng全局带来的问题比优势还要多。这个问题的主要目的是简化Angular的设置与其他框架相比,只需一个命令。因此,为了避免这些问题,我的建议是在文档中说明:
npx @angular/cli new my-app
或者像你建议的那样
npm init @angular@latest [project-name] -- [...options]
(我认为这没有文档记录,就像npx一样也没有文档记录)npx ng g c [name] [options]
p8ekf7hl3#
例如,您在本地有一个版本为15的应用程序,而您的全局CLI版本为11。在这里,您会遇到一个问题,因为无法以独立的方式生成组件基础,因为该标志不存在。
实际上,这不是一个问题。如果存在项目版本,全局安装的CLI将执行并使用该项目版本。您可以在前后方向上混合全局和项目版本。
ztmd8pv54#
实际上这不是一个问题。如果项目中存在版本,那么全局安装的CLI将执行并使用该项目版本。你可以在前后混合使用全局和项目版本。
你好@clydin,即使这是真的,我之前不知道,而且它没有文档记录,只适用于现有项目。
当从旧的全局CLI(例如v13)创建新项目时,它将创建一个具有v13版本的项目,而不是最新版本,对吗?
无论如何,我认为现在没有必要拥有全局CLI,这会污染操作系统。正如我所说,每次更新节点时,你都必须记住要全局安装它,而当你可以简单地在本地运行相同的命令时,这是不必要的步骤。
当你升级一个项目时,你只需关注项目的本地深度,就像迁移指南中提到的那样。
当然,这对于初学者来说很容易开始,只需执行一个命令来创建项目。
请再次更新文档,通过以下方式安装Angular;
npx @angular/cli new my-app
或者像你建议的那样
npm init @angular@latest [project-name] -- [...options]
并删除全局安装CLI的建议。
谢谢!