如何安装同一个node.js模块的多个版本?

时间:2012-08-27 08:57:38

标签: node.js npm

我可以使用node全局安装同一npm模块的多个版本吗?

3 个答案:

答案 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。

要让它们同时安装,但不能发生冲突,您可以:

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

    现在,从终端运行nodemon将运行nodemon@@.7.3,运行nodemon18将运行nodemon@1.8.1。

    <强> YMMV。我真的不建议这样做。