如何安装同一个node.js模块的多个版本?
我可以用npm
全局安装同一个node
模块的多个版本吗?
我不认为有一个(好)的方法来做到这一点。
不过,我猜你的用例是这样的:你有两个项目,需要不同版本的全局安装包。
对于这样的情况,我通常总是避免全局安装包,并将其安装在本地(而不是-g
)。 例如,如果你想为一个给定的项目安装一个特定的老版本的“摩卡”包,你会这样做
cd ~/src/myproject npm install --save-dev mocha@^1.0.0
(请注意,这里我们没有使用-g
。)然后像这样调用它:
./node_modules/.bin/mocha
不是现在。
(相关:您可以使用NVM(Node Version Manager)安装多个版本的节点: https : //github.com/creationix/nvm )
虽然有可能,但如果不编写自己的脚本来pipe理它,可能会很难维护。 为此,我假定您正在使用MacOS或Linux,并且已将节点安装在/usr/local/bin
在安装全局模块时,npm会将模块及其依赖项放置在安装节点的相同位置。 通常是/usr/local/lib/node_modules
,然后在/usr/local/bin
为该模块创build一个符号链接。
例如,您要安装nodemon,因此您运行npm install -g nodemon
。 npm将nodemon安装到/usr/local/lib/node_modules/nodemon
并在/usr/local/bin/nodemon
中创build指向/usr/local/lib/node_modules/nodemon/bin/nodemon.js
的符号链接
假设你刚刚安装了nodemon@1.8.1,但由于某种原因,你还需要nodemon@1.7.3。
要同时安装它们,而不是冲突,您可能能够:
- 将nodemon的现有副本的目录从
nodemon
重命名为nodemon18
- 使用
ln -s /usr/local/bin/nodemon18 /usr/local/lib/node_modules/nodemon/bin/nodemon.js
创build一个新的nodemon18
符号链接(不要忘记使其可执行) - 通过
npm install -g nodemon@1.7.3
现在,从terminal运行nodemon将运行nodemon@1.7.3,运行nodemon18
将运行nodemon@1.8.1。
因人而异。 我真的不build议这样做。