node.js - 集中式 node_modules

标签 node.js debian npm node-modules

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

我能够在 server.js 中设置 require 来使用像 require('../../../common/express') 这样的相对路径>,但来自阅读posts NPM 的作者,这听起来像是我在破解它,我应该使用 npm link 为 Node 创建一个“本地”引用(它指向实际安装的符号链接(symbolic link))。

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

最佳答案

事实证明:我应该在做任何其他事情之前设置 npm config set prefix

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

• Install it locally if you're going to require() it.

• Install it globally if you're going to run it on the command line.

• If you need both, then install it in both places, or use npm link.

这并没有具体解决我的问题:我想将模块存储在一个中央位置(以供多个 Node 应用程序访问),但我不关心从命令中使用它们——我只想要在 require('') 中使用它们。

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

关于node.js - 集中式 node_modules,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13865671/

相关文章:

javascript - amazon-cognito-identity-js - 忘记了无效用户的密码

node.js - macOS 中卸载 Nodejs 后仍然存在

regex - 如何在 Nginx 服务器上执行不区分大小写的正则表达式?

node.js - npm Bower 安装失败(卡在同一位置)

javascript - 如何在 React 应用中导入 highcharts 子模块

node.js - freenom API 未进行身份验证

ruby-on-rails - 我应该在 Ruby on Rails 还是 Node.js (meteor) 中制作我的下一个应用程序?

linux - SSH 权限被拒绝(公钥)

debian - 如何获取 debian 软件包的 *.changes 文件?

node.js - 在 reactjs 中使用 npm uuid