如何安装同一个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。

要同时安装它们,而不是冲突,您可能能够:

  1. 将nodemon的现有副本的目录从nodemon重命名为nodemon18
  2. 使用ln -s /usr/local/bin/nodemon18 /usr/local/lib/node_modules/nodemon/bin/nodemon.js创build一个新的nodemon18符号链接(不要忘记使其可执行)
  3. 通过npm install -g nodemon@1.7.3

现在,从terminal运行nodemon将运行nodemon@1.7.3,运行nodemon18将运行nodemon@1.8.1。

因人而异。 我真的不build议这样做。