安装多个npm版本

34

我是否可以为不同的项目安装多个版本的 npm,还是npm的安装始终是全局的? (Windows 10)

我尝试了使用https://github.com/marcelklehr/nodist安装不同版本,但似乎只影响节点版本,而不是 npm 版本。

那么 npm 版本实际上是否有关系?当一个项目要求特定的npm版本时,我是否可以只使用最新的npm版本?


1
关于最后一段的回复。是的,npm 版本可能很重要。npm 2.x3.x 之间存在很大的差异,例如在版本 3 中,默认情况下会对包进行去重,这可能会影响一些期望在 node_modules 中的特定路径找到某些依赖文件的应用程序。 - TMG
5个回答

46
您可以通过安装不同版本的node来安装多个版本的npm。要做到这一点,您可以使用nvm-windows。每个不同的node安装将安装一个不同版本的npm
要在项目中使用不同版本的nodenvm,您只需要切换即可:
nvm use 5.0
你也可以在项目根目录下创建一个包含版本号的.nvmrc文件,nvm将使用该项目指定版本的node

2
感谢 .nvmrc 文件的提示。当项目需要不同版本时,我一直在使用 nvm 来回切换,这真是一个巨大的时间节省者。 - Taylor D. Edmiston
@gnerkus 我正在使用 nvm,但是我需要 npm 4.6.1 版本,因为这是 React Native 推荐的版本。看起来没有任何节点包含此版本,有什么解决方法吗? - Rudolph Opperman
3
假设您有两个项目都使用 Node 10.18.0(在各自的 .nvmrc 文件中有“10.18.0”)。您应该如何设置,以便在处理项目1时使用 npm 7.5.0,在处理项目2时使用 npm 6.13.4? - Martin Carel
最近在使用nvm时,当我运行npm install(旧版的npm 6.x和node 16.14.0)时遇到了这个问题。我本以为使用nvm use 16.14.0会解决我的问题(npm npm does not support Node.js v16.14.0)。在Windows上的VSC中,它抛出了错误,但是当我以管理员身份(在Cmder中)运行npm intsall时,令人惊讶地安装了所有内容而没有抛出错误。有什么想法吗,为什么需要管理员权限的nvm可能会影响这个问题? - iLuvLogix

7

您还可以使用npm安装npm

安装特定版本的示例:

npm i -g npm@3.5.4


1
你不能轻易地降级npm版本。 - dorgan
@dorgan,你能提供一个例子吗?我自己降级npm没有遇到问题。 - Simon

3
如果您需要为每个项目使用不同版本的npm,有多种可能的解决方案。可能最轻量级的版本是使用 npx。这样做的半常见用例可能是使用lock-file v1的项目和使用lock-file v2的另一个项目。v2是在npm v7中引入的。
因此,在使用 lockfile v1 的项目中,如果您需要安装新的软件包。
npx npm@v6 install dalle-node

如果要使用lockfile v2或者只是想使用最新的版本。

npx npm@latest install dalle-node

npm版本有关紧要性吗?

在大多数情况下,它通常并不重要。上面的例子是我在自己的项目中遇到的一个问题。如果你使用一个项目,但一些npm命令出现了问题,例如npm run,请尝试使用项目推荐的npm版本,在向维护者报告错误之前进行尝试。


1
如果您正在使用 Eclipse IDE 进行 Node 项目,您可以轻松使用 Webclipse 插件更改 Node 版本。

enter image description here


0
你不应该试图安装多个版本的 npm 来管理相同的 node 包,而是应该尝试管理多个版本的 nodejs,每个 nodejs 版本都带有其自己所需的最低版本的 npm,这样你就可以获得多个版本的 npm 和多个版本的 nodejs。当你切换 node 版本时,npm 版本将自动切换。 要管理多个版本的 nodejs,你可以使用 nvm 或 n。
nvm install <nodejs version>
nvm use <nodejs version>

Thiago Caiubi提到的这里是在给定的nodejs版本中升级npm版本。该更新仅适用于该nodejs版本。其他nodejs版本的对应npm将不会受到影响。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接