我已经按照这篇文章中的说明为 node.js 安装了 NVM:
http://www.backdrifter.com/2011/02/18/using-nvm-and-npm-to-manage-node-js/
当我在 Node 版本之间切换然后使用 npm 安装模块时,所有模块都放置在同一个“node_modules”文件夹(~/node_modules/)中,而不是特定于该 Node 版本的“node_modules”目录中?
你知道如何解决这个问题吗?
最佳答案
基于 https://github.com/creationix/nvm/pull/97 的评论:
When installing packages with npm using the global switch -g the package ends up in the proper directory (i.e. .nvm/$VERSION/lib/node_modules), however node is unable to require it since it somehow isn't searching on it's prefix.
所以使用 npm install -g xxxxx
会将模块放置在 NVM 的正确位置,但是如果您尝试 require
其中一个 Node 找不到模块.我还在玩这个,如果我找到解决方案会更新。
更新
NPM 将 node_modules 放在哪里? (见 https://docs.npmjs.com/files/folders)
- 本地安装(默认):将东西放在当前包根目录的 ./node_modules 中。
- 全局安装(使用 -g):将内容放在/usr/local 或安装 Node 的任何位置。
- 如果你要
require()
,请在本地安装它。 - 如果您要在命令行上运行它,请全局安装它。
- 如果两者都需要,则在两个地方都安装,或者使用
npm link
。
所以我所做的是在生成 package.json 的项目根目录中运行 npm init
(参见 http://npmjs.org/doc/init.html)。现在,当我运行 npm install xxxxx
时,它会在我的项目文件夹中创建一个 node_modules 目录(我将其添加到我的 .gitignore 中)。这适用于我在代码中需要的模块。
对于诸如 CoffeeScript 之类的命令,我使用 npm install -g coffee-script
安装它,它将它放在正确的目录 (.nvm/$VERSION/lib/node_modules) 中。虽然我不需要这些模块(npm 链接应该可以解决这个问题),但我可以运行命令 - 即 coffee
。
关于node.js - Node 版本管理器 (NVM) npm 将模块安装到公共(public)文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9133784/