如何理解 pnpm 的 node 模块解析算法及其软链处理?

看 pnpm 官网文档的时候有一个疑惑 https://pnpm.io/zh/symlinked-node-modules-structure
pnpm 这里的 node module resolve 算法怎么理解呢。在 foo 中 require bar,如果说因为 .pnpm/foo@1.0.0/node_modules/bar 是软链所以被忽略的话,根据 node 模块查找算法,不应该开始查找 .pnpm/node_modules 目录(实际不存在)么?如果说 node 发现是软链,会定位到模块的原始文件,resolve 到 .pnpm/bar@1.0.0/node_modules/bar 倒是可以说通了,求问这里该如何理解呢。
image.png

https://meixg.cn/2021/01/25/ln-nodejs/
https://github.com/nodejs/node/issues/3402

阅读 1.2k
1 个回答
It doesn't ignore symlinks when searching for dependencies. It will resolve a dependency from a symlink. But the location of the resolved dependency won't be the symlink but the directory that the symlink points to.

https://github.com/orgs/pnpm/discussions/8347

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