硬连接和软连接
硬连接:存储的物理磁盘上该文件的地址。比如 F:// 恭喜发财.mp4
这个文件是一个硬连接,通过它可以找到物理磁盘上该 mp4 数据的地址。
软件连:是一个引用。它存储的是硬连接的地址。简而言之:它保存的是文件路径F:// 恭喜发财.mp4
。如果将原文件删除,通过软链接无法再次打开原文件。
node_modules
可以发现,在 npm install axios
之后,node_modules
文件夹下的 axios
是一个软链接(又称快捷方式),这个软链接指向一个硬连接。
真正的硬连接在 .pnpm
文件夹下
可以这么说,真正的硬连接只在 .pnpm 文件夹下,其余的 node_modules 里面的文件都是软连接。
优势
1.节省了磁盘空间,相当于每个依赖包在磁盘中只保存了一份
2.解决了幽灵依赖的问题(npm3 中,有时 import 一个在package.json中不存在的依赖,也不会报错。因为其他的依赖可能依赖了
3.pnpm_store可以实现不同项目之前的共享:A项目和B项目都依赖axios,那么他们的.pnpm下存放的硬连接都指向同一个磁盘空间。
https://www.cnblogs.com/wangmeijian/p/16613698.html
4.在monorepo中。如果我希望某个项目可以被其他项目引用,比如 pnpm install packageA
,那么就需要将 packageA
的路径写在 pmpn-workspace.yaml
下
如果是从网上下载的话,就写版本号;如果是本地依赖,就写 “workspace:*”
。