pnpm相对于npm和yarn的优势

1.npmyarn都采用了扁平化的装包策略。如果我们下载vue,执行npm i vue查看node_modules,可以看到我们只安装了vue,node_modules中却出现了这么多包,这些包都是vue中用到的依赖包,那么我们可以直接使用第三方依赖,如果有一天vue更新版本突然不用某个我们用到的依赖了,那么就会报错。这种情况也称之为幽灵依赖
image.png
使用pnpm可以看到目录是很清晰的,我们看到的node_modules中的vue文件夹只是一个软链接, 它的真正存储的地方在.pnpm 文件夹中。
image.png
2.假如有10个项目使用npm或者yarn下载依赖包,那么会产生10个依赖包的副本占用磁盘。使用pnpm会将依赖包存储到统一位置,上面看到的.pnpm是虚拟存储目录,里面的文件是从统一位置做的硬链接,而和.pnpm同级的vue包是一个符号链接。

什么是符号链接

符号链接也可以称为软连接。是一类特殊的文件, 其包含有一条以绝对路径或者相对路径的形式指向其它文件或者目录的引用。就是给目标文件创建一个快捷方式,可以防止一遍又一遍地复制相同的数据。使用软链接的方式生成的文件夹指向的是源文件,可以对源文件进行读写,删除软链接文件不会对源文件产生影响。

  • windows系统实操

    • 1 在D盘创建文件夹linkTest,linkTest里包含hello.txt,内容如下
      image.png
    • 2 在C盘创建软链接
      image.png

    根据提示进行操作
    image.png
    可以看到在C盘下生成了linkTest文件,那么我们现在修改C盘下的linkTest文件
    image.png
    查看D盘下的linkTest
    image.png
    可以看到D盘下相应的文件也发生了变化

    • 3 查看一个文件是否是软链接

    image.png

什么是硬链接

硬链接(hard link,也称链接)就是一个文件的一个或多个文件名。再说白点,所谓链接无非是把文件名和计算机文件系统使用的节点号链接起来。因此我们可以用多个文件名与同一个文件进行链接,这些文件名可以在同一目录或不同目录。在windows中

  • 1、硬连接适用于在同一个卷的文件级别,不允许给目录创建硬链接;
  • 2、硬连接是不能跨卷的,只有在同一文件系统中的文件之间才能创建链接

在C盘创建一个文件夹里面包含hello.txt文件

image.png

尝试在D盘创建硬链接

image.png

尝试给目录创建硬链接

image.png

给文件创建硬链接

image.png
image.png
文件内容如下
image.png

当我修改helloCopy之后

image.png
保存之后查看hello.txt文件
image.png

当我删除hello文件之后

helloCopy.txt是不会被删除的

查看.pnpm文件夹里的文件是否是硬链接

红框内的只要是几那么就证明计算机文件系统使用的节点号被创建了几次硬链接
image.png


mengyuhang4879
13 声望7 粉丝