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

我爱了你呢

看 pnpm 官网文档的时候有一个疑惑 [https://pnpm.io/zh/symlinked-node-modules-structure](https://link.segmentfault.com/?enc=vVYv4hlkKLqMpJarCssXLA%3D%3D.2b40iL%2BFDZvNsXRvOCU%2FMVrtesopbY%2FQ%2Bl6RCXvavVenlueA7psXgrHe7g4yc70R5Vjhs8YEh%2BcuJcImEth2Sg%3D%3D) 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://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20240919/f8a57b6e4700ec8bebafa88c7e2d523a.png) [https://meixg.cn/2021/01/25/ln-nodejs/](https://link.segmentfault.com/?enc=ZYzn2qkMg7c0uL4syF%2Byhw%3D%3D.bfr3Xn%2FocZQKRKzO3jSzxQOWLRvIHr8I1I1Zo6BCKliLJfbIEY11jST%2B4w5OmMoW) [https://github.com/nodejs/node/issues/3402](https://link.segmentfault.com/?enc=8Ig%2FmAka10WVTz80hFbfAA%3D%3D.Oao6uIbPebyTldmiGz1MJcZl68SNGbhT%2BnFv6X7L0oo3P7dFusJQz1yjO9fvBBdD)

阅读量:125

点赞量:0

问AI
«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" (https://link.segmentfault.com/?enc=e0Yz6iZAMaNwOPiCbCmD8Q%3D%3D.ezFrbqO7QHAYMoRrgNcN4vDtFRU0xvDGdnvdUTr4HnA454dGht5JrfVy%2B1xvNz9B)