就比如我项目原来是npm的,然后安装了一堆依赖,此时nodemodules底下会有express依赖
此时我换成了pnpm安装,然后他会生成一个.pnpm目录,这时候他也会有express依赖,只不过是软硬连接,这时候我如果找express依赖的话,找的是哪个呢
就比如我项目原来是npm的,然后安装了一堆依赖,此时nodemodules底下会有express依赖
此时我换成了pnpm安装,然后他会生成一个.pnpm目录,这时候他也会有express依赖,只不过是软硬连接,这时候我如果找express依赖的话,找的是哪个呢
就问题而言,会使用 pnpm 安装的 express。但其它依赖需要分依赖来源讨论。
比如项目依赖了 x,先 npm install x,再 pnpm install。这时 pnpm 会重建 node_modules 目录,把项目相关依赖都重新链接到 .pnpm 下的依赖文件夹。由于 npm install 时会提升依赖,所以 npm 安装 x 时提升的依赖如 y 你依旧能访问到。也就是说,x 是 pnpm 安装的 x,但 y 是 npm 安装的 y。
./node_modules/
.pnpm/
x -> link to .pnpm/x
y -> npm installed
混用依赖管理器是不好的实践。如果涉及在多个项目使用不同的管理器,可以尝试用 @antfu/ni 或 corepack。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
你指的是幽灵依赖 —— 你没直接安装它、而是你安装的某个依赖的依赖这种吗?
如果是的话,那你在项目里 import 进来的是 npm 安装的那个版本。
P.S. 混用包管理工具是大忌,你这就是给自己埋雷呢……