我可以使用node
全局安装同一npm
模块的多个版本吗?
答案 0 :(得分:4)
我认为没有(好的)方法可以做到这一点。
但是,我猜你的用例是这样的:你有两个项目,需要不同版本的全局安装包。
对于这样的情况,我通常会避免全局安装软件包,而是在本地安装它们(没有-g
)。例如,如果您想为给定项目安装特定旧版本的“mocha”软件包,那么您可以
cd ~/src/myproject
npm install --save-dev mocha@^1.0.0
(请注意,我们这里没有使用-g
。)然后调用它:
./node_modules/.bin/mocha
答案 1 :(得分:1)
目前不是。
(相关:您可以使用NVM(节点版本管理器)安装多个版本的节点:https://github.com/creationix/nvm)
答案 2 :(得分:1)
虽然有可能,但如果不编写自己的脚本来管理它,可能很难维护。为此,我将假设您使用的是MacOS或Linux,并且您已在/usr/local/bin
中安装了节点
安装全局模块时,npm会将模块及其依赖项放在安装节点的同一位置。通常/usr/local/lib/node_modules
,然后在/usr/local/bin
中为该模块创建符号链接。
例如,您要安装nodemon,因此运行npm install -g nodemon
。 npm将nodemon安装到/usr/local/lib/node_modules/nodemon
并在/usr/local/bin/nodemon
处创建指向/usr/local/lib/node_modules/nodemon/bin/nodemon.js
让我们假设您刚刚安装了nodemon@1.8.1,但出于某种原因,您还需要nodemon@@.7.3。
要让它们同时安装,但不能发生冲突,您可以:
nodemon
重命名为nodemon18
nodemon18
创建新的ln -s /usr/local/bin/nodemon18 /usr/local/lib/node_modules/nodemon/bin/nodemon.js
符号链接(不要忘记让它可执行)npm install -g nodemon@1.7.3
现在,从终端运行nodemon
将运行nodemon@@.7.3,运行nodemon18
将运行nodemon@1.8.1。
<强> YMMV。我真的不建议这样做。