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