微前端 前置知识2--- monorepo架构

目录

前言

pnpm vs npm

pnpm设计思想

硬连接

软链接 (符号链接)

原理 

pnpm 指令

monorepo架构

介绍

配置monorepo 

 pnpm --filter


前言

我们采用的是微前端一个主应用,和多个子应用,我们肯定不会一个一个去install安装依赖,太傻了,我们采用monorepo 架构 一次install 即可安装完成。

第一步需要安装pnpm

pnpm内置了对单个代码仓库包含多个软件包的支持,是monorepo架构模式的不二速选

npm i pnpm -g

pnpm vs npm

当使用 npm 时,如果你有 100 个项目,并且所有项目都有一个相同的依赖包,那么, 你在硬盘上就需要保存 100 份该相同依赖包的副本。然而,如果是使用 pnpm,依赖包将被 存放在一个统一的位置,因此:

  1. 如果你对同一依赖包需要使用不同的版本,则仅有 版本之间不同的文件会被存储起来。例如,如果某个依赖包包含 100 个文件,其发布了一个新 版本,并且新版本中只有一个文件有修改,则 pnpm update 只需要添加一个 新文件到存储中,而不会因为一个文件的修改而保存依赖包的 所有文件。
  2. 所有文件都保存在硬盘上的统一的位置。当安装软件包时, 其包含的所有文件都会硬链接自此位置,而不会占用 额外的硬盘空间。这让你可以在项目之间方便地共享相同版本的 依赖包。

最终结果就是以项目和依赖包的比例来看,你节省了大量的硬盘空间, 并且安装速度也大大提高了!

pnpm设计思想

软链接+硬链接+仓库

硬连接

硬链接是计算机文件系统中的一种链接方式,它允许一个文件拥有多个文件名或路径。与软链接(符号链接)不同,硬链接是通过在文件系统中创建一个新的目录项来实现的,这个目录项与原始文件的索引节点(inode)相同。

硬链接的主要特点是,它们与原始文件共享相同的数据块和inode,因此它们在文件系统中的大小是相同的。当创建一个硬链接时,操作系统会为新的目录项分配一个新的文件名,但是它会指向原始文件的inode,这样就可以通过不同的文件名访问同一个文件的内容。

硬链接的好处是可以节省存储空间,因为多个文件名指向同一个数据块。当其中一个文件被删除时,其他硬链接仍然可以访问到文件的内容,只有当所有硬链接都被删除时,文件的数据块才会被释放。

需要注意的是,硬链接只能在同一个文件系统中创建,不能跨文件系统创建硬链接。此外,硬链接不能指向目录,只能指向文件。

创建硬链接

微前端 前置知识2--- monorepo架构_第1张图片

共享同一个内存地址 

软链接 (符号链接)

软连接(Symbolic Link),也称为符号链接或软链接,是一种特殊类型的文件,它指向另一个文件或目录。软连接可以在文件系统中创建一个指向目标文件或目录的快捷方式,类似于Windows系统中的快捷方式。

与硬链接不同,软连接是一个独立的文件,它包含了指向目标文件或目录的路径信息。当我们访问软连接时,实际上是通过软连接的路径找到目标文件或目录。软连接可以跨越不同的文件系统,甚至可以指向不存在的目标。

软连接的优点是它们可以提供灵活性和便捷性。我们可以使用软连接来创建文件的备份,或者在不同的目录之间共享文件。此外,软连接还可以简化文件路径,使得文件访问更加方便。

需要注意的是,当我们删除软连接时,只会删除软连接本身,而不会影响目标文件或目录。如果我们删除了目标文件或目录,软连接将变为"断开的"软连接,访问它将会失败。

总结来说,软连接是一种指向目标文件或目录的快捷方式,它提供了灵活性和便捷性,可以跨越不同的文件系统。

创建软链接

微前端 前置知识2--- monorepo架构_第2张图片

 可以理解成快捷方式 没有大小 只记录一个路径

微前端 前置知识2--- monorepo架构_第3张图片 

原理 

现在,让我们将这些概念应用到pnpm的原理中。pnpm使用了硬链接和软链接的组合来实现包的管理。当我们使用pnpm安装一个包时,它会将包的依赖项安装到一个共享的存储区域,称为"node_modules/.pnpm-store"。在这个存储区域中,每个包都有一个唯一的标识符。

当我们安装一个包时,pnpm会创建一个硬链接,将包的文件链接到存储区域中的对应位置。这样,多个项目可以共享相同的包,而不需要在每个项目中都复制一份。

此外,pnpm还使用软链接来创建项目的"node_modules"目录。当我们在项目中安装一个包时,pnpm会在项目根目录下创建一个软链接,指向存储区域中的对应包。这样,项目中的代码可以像使用本地包一样使用存储区域中的包。

通过使用硬链接和软链接的组合,pnpm实现了高效的包管理,节省了存储空间,并提供了更快的安装和更新速度。

微前端 前置知识2--- monorepo架构_第4张图片

pnpm 指令

  1. pnpm install:安装项目的依赖项。这个指令会根据项目的package.json文件中的依赖配置,从存储区域中安装对应的包到项目的node_modules目录中。

  2. pnpm install :安装指定包的最新版本。可以在指令后面跟上要安装的包的名称。

  3. pnpm install --save-dev :安装指定包并将其添加到开发依赖项中。这个指令会将包的信息添加到项目的package.json文件中的devDependencies字段。

  4. pnpm update:更新项目的依赖项到最新版本。这个指令会检查存储区域中的包是否有新的版本,并将其更新到项目的node_modules目录中。

  5. pnpm uninstall :卸载指定的包。这个指令会从项目的node_modules目录中移除指定的包,并从package.json文件中的依赖配置中删除对应的信息。

  6. pnpm run

你可能感兴趣的:(前端)