疑问: pnpm既然平铺了所有依赖,为什么还存在 ./node_modules/.pnpm/node_modules 文件夹?

> tree -a -l -L 3
.
|-- .bin
|   |-- tsc
|   |-- tsc.CMD
|   |-- tsc.ps1
|   |-- tsserver
|   |-- tsserver.CMD
|   `-- tsserver.ps1
|-- .modules.yaml
|-- .pnpm
|   |-- @babel+helper-string-parser@7.27.1
|   |   `-- node_modules
|   |-- @babel+helper-validator-identifier@7.27.1
|   |   `-- node_modules
|   |-- @babel+parser@7.27.5
|   |   `-- node_modules
|   |-- @babel+types@7.27.3
|   |   `-- node_modules
|   |-- @jridgewell+sourcemap-codec@1.5.0
|   |   `-- node_modules
|   |-- @uni-helper+uni-app-types@1_01b083c299b86a697d0011fc21242d3a
|   |   `-- node_modules
|   |-- @uni-helper+uni-cloud-types_9ec35d2b233c9ff9fff8f648b922d4de
|   |   `-- node_modules
|   |-- @uni-helper+uni-types@1.0.0_6bbf085f910dd4f0bdd4accc9f972373
|   |   `-- node_modules
|   |-- @uni-helper+uni-ui-types@1._cb7a86eaf4983bf9e2f4484ab9e03156
|   |   `-- node_modules
|   |-- @vue+compiler-core@3.5.16
|   |   `-- node_modules
|   |-- @vue+compiler-dom@3.5.16
|   |   `-- node_modules
|   |-- @vue+compiler-sfc@3.5.16
|   |   `-- node_modules
|   |-- @vue+compiler-ssr@3.5.16
|   |   `-- node_modules
|   |-- @vue+reactivity@3.5.16
|   |   `-- node_modules
|   |-- @vue+runtime-core@3.5.16
|   |   `-- node_modules
|   |-- @vue+runtime-dom@3.5.16
|   |   `-- node_modules
|   |-- @vue+server-renderer@3.5.16_vue@3.5.16_typescript@5.8.3_
|   |   `-- node_modules
|   |-- @vue+shared@3.5.16
|   |   `-- node_modules
|   |-- csstype@3.1.3
|   |   `-- node_modules
|   |-- entities@4.5.0
|   |   `-- node_modules
|   |-- estree-walker@2.0.2
|   |   `-- node_modules
|   |-- lock.yaml
|   |-- magic-string@0.30.17
|   |   `-- node_modules
|   |-- nanoid@3.3.11
|   |   `-- node_modules
|   |-- node_modules
|   |   |-- .bin
|   |   |-- @babel
|   |   |-- @jridgewell
|   |   |-- @uni-helper
|   |   |-- @vue
|   |   |-- csstype
|   |   |-- entities
|   |   |-- estree-walker
|   |   |-- magic-string
|   |   |-- nanoid
|   |   |-- picocolors
|   |   |-- postcss
|   |   |-- source-map-js
|   |   |-- typescript
|   |   `-- vue
|   |-- picocolors@1.1.1
|   |   `-- node_modules
|   |-- postcss@8.5.4
|   |   `-- node_modules
|   |-- source-map-js@1.2.1
|   |   `-- node_modules
|   |-- typescript@5.8.3
|   |   `-- node_modules
|   `-- vue@3.5.16_typescript@5.8.3
|       `-- node_modules
|-- .pnpm-workspace-state.json
`-- @uni-helper
    `-- uni-types
        |-- LICENSE
        |-- README.md
        |-- dist
        |-- node_modules
        `-- package.json

78 directories, 12 files

首先我知道.pnpm/ 文件夹的用途。 .pnpm/ 以平铺的形式储存着所有的包,所以每个包都可以在这种命名模式的文件夹中被找到:
.pnpm/<name>@<version>/node_modules/<name>
我们称之为虚拟存储目录。

既然每一个依赖都 平铺了, 比如对于 被平铺的依赖 E:\临时文件\Examplefolder\node_modules\.pnpm\@uni-helper+uni-types@1.0.0_6bbf085f910dd4f0bdd4accc9f972373\node_modules

有一个 子依赖 typescript.
image.png
这个子依赖会被平铺到
node_modules\.pnpm\typescript@5.8.3\node_modules\typescript

image.png

所以 E:\临时文件\Examplefolder\node_modules\.pnpm\node_modules .pnpm下的node_modules的文件夹存在的意义是什么?

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