繁体   English   中英

集中的node_modules

[英]Centralised node_modules

我想将我的Node模块存储在一个集中的位置,例如/var/http/common/并让我的应用程序在其他位置运行/运行,例如/var/http/www/apps/APP#1_NAME/

我能够在server.js设置require('../../../common/express')以使用诸如require('../../../common/express')类的相对路径,但是从阅读NPM作者的帖子时 ,听起来好像我在黑客我应该使用npm link为Node创建一个“本地”引用(符号链接到实际安装)。

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

原来:在执行其他操作之前,我应该已经设置了npm config set prefix

看起来npm linknpm install -g做同样的事情。 但是,尽管npm link将在全局安装模块,但它还会node_modulesnode_modules指向$prefix/lib/node_modules/$module的本地符号链接。 MaxGfeller不正确:如果没有该本地符号链接,Node将抱怨它找不到(全局安装的)模块。 这是通过我自己的尝试确定的,也可以从npm help folders推论得出:

•如果需要require() ,请在本地安装。

•如果要在命令行上运行它,请全局安装它。

•如果两者都需要,则将其安装在两个地方,或使用npm link

这并没有专门解决我的要求:我想将模块存储在一个中央位置(以供多个节点应用程序访问),但是我不关心从以下命令中使用它们,我只想使用它们在require('')

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

您可以通过在命令中添加“ -g”来全局安装节点模块。 例如:

npm install express -g

在您的代码中,您可以正常使用它:

require('express');

然后将模块存储在/ usr / local / lib / node_modules中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM