我有两个项目:
- project A: Node 16.10.0 NPM 7.24.2
- 项目B: Node 16.10.0 NPM 8.10.0
都需要相同版本的Node,但不同版本的NPM。我想知道NVM是否可以实现这一点。
我能够做到(在MacOS上)),但它相当粗糙
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
for npm 7.24.2nvm use v16_npm8
for npm 8.10.0
是否有更好的解决方案?
一个更好的解决方案是在每个项目的.nvmrc
文件中定义npm版本。
有一个nvm特性请求:https://github.com/nvm-sh/nvm/issues/964.
与此同时,一个建议的解决方法是在包中定义一个preinstall
脚本。安装所需的NPM版本,例如:
"preinstall": "npm i -g npm@8.10.0"