[英]npm install is not installing dependencies of dependencies
当我npm install
我的节点应用程序时,我的package.json
的dependencies
属性中的包列表被安装。 但是,出于某种原因,其中一些依赖项没有安装它们的子依赖项。 换句话说,没有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-package
的node_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.