繁体   English   中英

npm install is not installing dependencies of dependencies 的依赖

[英]npm install is not installing dependencies of dependencies

当我npm install我的节点应用程序时,我的package.jsondependencies属性中的包列表被安装。 但是,出于某种原因,其中一些依赖项没有安装它们的子依赖项。 换句话说,没有node_modules文件夹有我的依赖项的依赖项。

myproject
- node_modules
  - my-package
    - node_modules (would expect this to be here, but it's not)

奇怪的是,这是另一个项目,正在为相同的包安装子依赖项。

即使当我尝试通过npm install my-package手动安装单个 package 时,也没有安装 node_modules 包。

有没有可能是这种情况的原因? 或者我可以调试它的方法?

谢谢

NPM试图在根级别上平化依赖项。 如果是满足您所有依赖关系的版本(或者只有一个软件包满足依赖关系,或者该版本满足package.json中定义的所有软件包要求),它将把它汇总到您的node_modules的根目录。 这是有意完成的,因此不会多次安装相同的依赖项。

如果模块的版本相互冲突,则会发生此规则的异常,例如package1的依赖性为版本1.0.1,而package2的依赖性为版本2。

我打开了一个类似的问题,然后又回到了这个我认为缺乏实际解决方案的问题。 我目前已经设法找到它,让你的 package 安装它自己的node_modules的正确方法是将以下内容添加到你的package.json

"bundledDependencies": [
    "npm-package"
]

在该数组中,将要安装的包添加到of my-packagenode_modules文件夹中:

myproject
- node_modules
  - my-package
    - node_modules <-- This folder will contain the packages of the array

因此,package json 的示例可能是:

{
  "name": "my-package",
  "version": "1.0.0",
  "dependencies": {
    "cheerio": "^1.0.0-rc.10",
    "jsdom": "^19.0.0",
    "yargs": "13.2"
  },
  "bundledDependencies": [
    "yargs",
    "jsdom"
  ]
}

当您将my-package安装在另一个项目中时,它将拥有自己的node_modules以及bundledDependencies中指定的包。

暂无
暂无

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

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