集中式node_modules

jac*_*cob 5 debian node.js npm node-modules

我想将我的Node模块存储在一个集中的位置,比如说,/var/http/common/让我的应用程序在不同的位置实时/运行/var/http/www/apps/APP#1_NAME/.

我能够设置server.js使用相对路径的需求require('../../../common/express'),但是从NPM的作者阅读帖子,听起来我正在攻击它,我应该用它npm link为Node创建一个"本地"引用(符号链接到真正的安装).

我首先安装了我的节点模块/var/http/common/,但是当我尝试创建symlink(npm link ../../../common/node_modules/express)时,npm似乎将其视为"全局"安装,并重新安装了express /usr/local/lib/node_modules/express(并创建了一个"本地"符号链接./node_modules/express ->)这不是我预期会发生的事情.这是我真正想要的吗?我应该先使用npm config set prefix吗?

jac*_*cob 3

事实证明:我应该npm config set prefix在做其他事情之前就做好准备。

\n

看起来npm linknpm install -g做同样的事情;然而,在npm link全局安装该模块的同时,它还会node_modules创建一个指向 的本地符号链接$prefix/lib/node_modules/$moduleMaxGfeller是不正确的:如果没有本地符号链接,Node 会抱怨它找不到(全局安装的)模块。这是通过我自己的尝试确定的,也是从以下推断出来的npm help folders

\n
\n

\xe2\x80\xa2如果您需要require()它,请在本地安装它。

\n

\xe2\x80\xa2如果您要在命令行上运行它,请全局安装它。

\n

\xe2\x80\xa2 如果您需要两者,则将其安装在两个位置,或使用npm link

\n
\n

这并没有具体解决我的问题:我希望将模块存储在一个中央位置(由多个节点应用程序访问),但我不关心从像 \xe2\x80\ 这样的命令使用它们x94我只想在require(\'\').

\n

至于我关于在 中使用相对路径的问题require(\'\'),我仍然没有得到/找到权威的答案,但从npm link使用相对路径的存在来看似乎并不是作者的意图。对我来说,这似乎是一个六合一的情况,但我想与 Node 的标准保持一致。

\n