我有一个网络应用程序:fooapp.我的根上有一个package.json.我想将所有依赖项安装在特定的node_modules directory中.我该怎么做?

我想要什么

假设我有两个widget依赖项.我想以这样的目录 struct 结束:

node_modules/
  widgetA
  widgetB
fooapp/
  package.js
  lib
  ..

我得到了什么

当我跑npm install fooapp/的时候,我得到了这个:

node_modules/
  fooapp/
    node_modules/
      widgetA
      widgetB
    package.js
    lib/
    ..
fooapp/
  package.js
  lib/
  ..

npm在node_modules目录中复制我的应用程序目录,并在another node_modules目录中安装软件包.

我理解这对于安装软件包是有意义的.但我不把我的网络应用放在其他东西里面,我直接运行它.我正在寻找一种简单的方法,将依赖项安装到特定的node_modules目录中.

推荐答案

run :

npm install

从应用程序目录(即package.json所在的位置)中安装应用程序的依赖项for,而不是将其作为模块as described here安装.这些将被放置在/与包相关的 node _模块.json文件(实际上比这个稍微复杂一点,所以判断the npm docs here).

如果你愿意,你可以自由地将node_modules dir移动到应用的父dir,因为node的"require"机制可以理解这一点.然而,如果你想用install/update更新你的应用程序的依赖项,npm将不会看到重新定位的"node_modules",而是会创建一个新的dir,同样是相对于包的dir.json.

为了防止出现这种情况,只需从app dir创建一个指向重新定位的 node _模块的符号链接:

ln -s ../node_modules node_modules

Node.js相关问答推荐

如何使用MongoDB在Node.js 中向数组中添加项?

NodeJS中的Vertex AI GoogleAuthError

如何从基于JSON的HTML/SCSS模板生成PDF?

Node.js中使用ffmpeg如何获取视频截图的位置?

如何设置 Puppeteer Select 器的唯一性?

2023年如何在Node.js中使用Gmail发送邮箱?

Cypress.io - 如何等待返回调用属性的方法的结果?

错误 node :错误:绑定消息提供 16 个参数,但准备语句需要 15 个

为什么后端开发需要单独的服务器?

Mocha调用所有it回调模拟(测试中间件)

在 NodeJS/ESP32 中通过 WebSocket 发送二进制数据 - 如何识别二进制和文本消息

如何在 mongoDB 中进行全动态搜索?

Handlebars:访问已被拒绝解析来自的属性,因为它不是其父级的自己的属性

如何正确使用 package.json 中的关键字属性?

为什么 Node 控制台不显示功能代码?

需要 node-gyp 的 npm install 在 Windows 上失败

未在 Windows 8.1 上构建的 node 包 - 缺少 Microsoft.Cpp.Default.props

Node.js - 判断是否安装了模块而不实际需要它

为什么 Node.js 被命名为 Node.js?

桌面应用程序仅支持 oauth_callback 值 'oob'/oauth/request_token