npm - 如何防止在 node_modules 中嵌套 node_modules
问题描述
我已经创建了自己的 npm 包,我们称之为 XYZ,它的文件@material-ui
中有依赖项。package.json
当我在项目 AI 中安装它时,在 XYZ 文件夹中嵌套了 node_modules(所以它是A\node_modules\XYZ\node_modules\@material-ui
),但是当我在项目 BI 中安装它时,没有嵌套的 node_modules 文件夹。项目 A 和 B@material-ui
在他们的package.json
文件中都有相同的版本。
如何强制我的 XYZ 包使用@material-ui
from A\node_modules
?
解决方案
嵌套文件夹较少,而在 node_modules 文件夹中直接拥有更多文件夹以及版本控制问题有好处。
使用正确的 npm 版本
正确yarn
并且npm
(即:npm v3)不应该有这样的结构问题。它应该在可能的情况下始终展平整个结构,并且只有在版本与顶部的版本不兼容时才具有嵌套的 node_modules。
检查版本
因此,如果您让它在一个项目上正常工作而不是在另一个项目上,它可能是由于版本。检查@material-ui
两者的版本是否相同。也许两个不同的包在某些时候相互冲突。
检查你是如何安装它们的
根据您的问题,它说它是相同的版本。但是,您没有提及如何在两个项目上安装软件包。如果您安装,yarn link
或者npm link
它应该按预期正确安装依赖项。
检查您是否使用不同的软件包
如果你检查包,最近material-ui
已被弃用,通知说要升级到@material-ui/core
代替。可能是该文件夹内的某些包不一样。无论哪种方式,只要有一些依赖冲突,它就是这样。检查@material-ui
文件夹内部。
手动压平它们(危险)
有几个包可以强制解决这个问题。他们将通过嵌套的 node_modules 文件夹并将它们展平为单个文件夹。
flatten-packages
- 安装,
npm install -g flatten-packages
. - 运行可执行文件
flatten-packages
以重新排列项目目录中 node_modules 文件夹中的所有包。 - Flatten 将删除旧版本的包。您应该注意与版本中断更改相关的错误。
推荐阅读
- javascript - React Native:如何将屏幕更改/导航为子组件?
- azure - 由于 netcore 3.1.4 安全补丁导致 Azure 出错
- sling - 如何在 Apache Sling 或 Jackrabbit Oak 中进行用户模拟?
- linux - 如何使用并行命令调整多个 png 文件的大小并保留源文件中的部分名称?
- python - 如何使用文件夹中的 pandas 读取任何 excel 文件?
- postman - 在 Postman 中创建 AES 加密的标头值
- reactjs - React Material UI 响应式 Appbar
- google-play - 卡在处理更新一个多月
- python - Zillow API having issues with running basic commands
- .net - 如何获取资源文件的路径?