pnpm相对于npm和yarn的优势
1.npm
和yarn
都采用了扁平化的装包策略。如果我们下载vue,执行npm i vue
查看node_modules
,可以看到我们只安装了vue,node_modules
中却出现了这么多包,这些包都是vue中用到的依赖包,那么我们可以直接使用第三方依赖,如果有一天vue更新版本突然不用某个我们用到的依赖了,那么就会报错。这种情况也称之为幽灵依赖
。
使用pnpm可以看到目录是很清晰的,我们看到的node_modules
中的vue
文件夹只是一个软链接, 它的真正存储的地方在.pnpm
文件夹中。
2.假如有10个项目使用npm
或者yarn
下载依赖包,那么会产生10个依赖包的副本占用磁盘。使用pnpm
会将依赖包存储到统一位置,上面看到的.pnpm
是虚拟存储目录,里面的文件是从统一位置做的硬链接,而和.pnpm
同级的vue
包是一个符号链接。
什么是符号链接
符号链接也可以称为软连接。是一类特殊的文件, 其包含有一条以绝对路径或者相对路径的形式指向其它文件或者目录的引用。就是给目标文件创建一个快捷方式,可以防止一遍又一遍地复制相同的数据。使用软链接的方式生成的文件夹指向的是源文件,可以对源文件进行读写,删除软链接文件不会对源文件产生影响。
windows系统实操
- 1 在D盘创建文件夹
linkTest
,linkTest
里包含hello.txt
,内容如下
- 2 在C盘创建软链接
根据提示进行操作
可以看到在C盘下生成了linkTest
文件,那么我们现在修改C盘下的linkTest
文件
查看D盘下的linkTest
可以看到D盘下相应的文件也发生了变化- 3 查看一个文件是否是软链接
- 1 在D盘创建文件夹
什么是硬链接
硬链接(hard link,也称链接)就是一个文件的一个或多个文件名。再说白点,所谓链接无非是把文件名和计算机文件系统使用的节点号链接起来。因此我们可以用多个文件名与同一个文件进行链接,这些文件名可以在同一目录或不同目录。在windows中
- 1、硬连接适用于在同一个卷的文件级别,不允许给目录创建硬链接;
- 2、硬连接是不能跨卷的,只有在同一文件系统中的文件之间才能创建链接
在C盘创建一个文件夹里面包含hello.txt文件
尝试在D盘创建硬链接
尝试给目录创建硬链接
给文件创建硬链接
文件内容如下
当我修改helloCopy之后
保存之后查看hello.txt
文件
当我删除hello文件之后
helloCopy.txt
是不会被删除的
查看.pnpm文件夹里的文件是否是硬链接
红框内的只要是几那么就证明计算机文件系统使用的节点号被创建了几次硬链接
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。