pnpm安装的依赖,同时npm也安装了依赖,他会找哪个呢?

就比如我项目原来是npm的,然后安装了一堆依赖,此时nodemodules底下会有express依赖

此时我换成了pnpm安装,然后他会生成一个.pnpm目录,这时候他也会有express依赖,只不过是软硬连接,这时候我如果找express依赖的话,找的是哪个呢

阅读 4.7k
4 个回答

你指的是幽灵依赖 —— 你没直接安装它、而是你安装的某个依赖的依赖这种吗?

如果是的话,那你在项目里 import 进来的是 npm 安装的那个版本。

P.S. 混用包管理工具是大忌,你这就是给自己埋雷呢……

就算可以用后面可能也会有一些冲突的问题,所以把 node_modules 手动删除再使用 pnpm 重新安装依赖。并且可能还会遇到“幽灵依赖”之类的问题

就问题而言,会使用 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。

理论上 pnpm 是不认识的,需要使用 --shamefully-hoist

这个参数的命名是你使用它需要 shamefully...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题