节点版本管理器(NVM)npm将模块安装到公共文件夹

时间:2012-02-03 18:40:11

标签: node.js

我已经使用此帖子中的说明为node.js安装了NVM:

http://www.backdrifter.com/2011/02/18/using-nvm-and-npm-to-manage-node-js/

当我在节点版本之间切换然后使用npm来安装模块时,所有模块都放在相同的'node_modules'文件夹(〜/ node_modules /)中,而不是放在特定于该节点版本的'node_modules'目录中?

关于如何解决这个问题的任何想法?

2 个答案:

答案 0 :(得分:34)

基于https://github.com/creationix/nvm/pull/97的评论:

  

使用全局开关-g时使用npm安装软件包时   包裹最终在正确的目录中(即   .nvm / $ VERSION / lib / node_modules),但节点无法要求它   因为它以某种方式不会搜索它的前缀。

因此,使用npm install -g xxxxx会将模块放在NVM的正确位置,但如果您尝试require其中一个节点找不到该模块。我仍在玩这个,如果找到解决方案,我会更新。

<强>更新

NPM在哪里放置node_modules? (见https://docs.npmjs.com/files/folders

  • 本地安装(默认):将东西放入当前包根目录的./node_modules中。
  • 全局安装(使用-g):将内容放入/ usr / local或安装节点的任何位置。
  • 如果您要转发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

答案 1 :(得分:1)

我刚安装了全球快递(-g),并且在需要时遇到问题(&#34;表达&#34;)。就像Je​​sse Vogt说的那样,我刚刚重新安装了express,但这次没有-g就像这样:&#34; sudo npm install express&#34;现在工作得很好!