15

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

4

3 回答 3

4

我认为没有(好的)方法可以做到这一点。

但是,我猜您的用例是这样的:您有两个项目,它们需要不同版本的全局安装包。

对于这样的情况,我通常避免完全全局安装包,而是在本地安装它们(不带-g)。例如,如果您想为给定项目安装特定旧版本的“mocha”包,您会这样做

cd ~/src/myproject
npm install --save-dev mocha@^1.0.0

(请注意,我们没有-g在这里使用。)然后像这样调用它:

./node_modules/.bin/mocha
于 2015-10-15T20:08:36.923 回答
2

虽然这是可能的,但如果不编写自己的脚本来管理它,可能会很难维护。为此,我将假设您使用的是 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。

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

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

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

YMMV。我真的不建议这样做。

于 2016-01-22T20:20:49.077 回答
1

不是现在。

(相关:您可以使用 NVM(节点版本管理器)安装多个版本的节点:https ://github.com/creationix/nvm )

于 2014-01-16T16:45:20.590 回答