NVM - 如何使用NVM安装相同的Node版本,但安装不同全局版本的NPM?

4

我有两个项目:

  • 项目 A: Node 16.10.0 NPM 7.24.2
  • 项目 B: Node 16.10.0 NPM 8.10.0

两个项目都需要相同版本的 Node,但需要不同版本的 NPM。我想知道是否可以使用 NVM 来实现。

我在 MacOS 上成功实现了这个目标,但方法比较 hacky。

nvm use v16.10.0
npm -v      # 7.24.2
which node  # /Users/useriko/.nvm/versions/node/v16.10.0/bin/node

# duplicate v16.10.0 folder
ditto ~/.nvm/versions/node/v16.10.0 ~/.nvm/versions/node/v16.10.0_npm8

nvm use v16.10.0_npm8
npm i -g npm@8.10.0

nvm alias v16_npm7 v16.10.0
nvm alias v16_npm8 v16.10.0_npm8

现在我可以在它们之间切换

  • nvm use v16_npm7用于npm 7.24.2
  • nvm use v16_npm8用于npm 8.10.0

是否有更好/替代的解决方案?

1个回答

1
更好的解决方案是在每个项目的 .nvmrc 文件中定义 npm 版本。
有一个 nvm 的功能请求正在寻求这个功能:https://github.com/nvm-sh/nvm/issues/964
与此同时,提出了一个解决方法,即在 package.json 中定义一个 preinstall 脚本,安装所需的 npm 版本,例如:
"preinstall": "npm i -g npm@8.10.0"

谢谢!为了使这个解决方案生效,还需要启用nvm的深度集成。https://github.com/nvm-sh/nvm#deeper-shell-integration否则,如果您忘记手动切换到正确的node版本,可能会在错误的node版本中安装npm - tonymontana

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