必博(中国)Bibo·官方网站 - 做高端体育品牌

这些前端新技术你很难再忽视了——pnpm-必博官方网站
010-67952968
当前位置: 首页 > 行业洞察 > 行业新闻

这些前端新技术你很难再忽视了——pnpm

2024-10-29 22:52:33 小编

  新系列《这些前端新技术你很难再忽视了》,包括:SolidJS、Svelte、Tauri、Bun、Schema等。每一个都引领前端技术演变趋势,很有必要了解。

  咱们将采用 5W1H 分析法,即 What(何事)、Why(何因)、Where(何地)、When(何时)、何人(Who)、How(何法)6 个维度来解析这些“新玩意儿”。

  答:简单理解 pnpm 就是 npm、yarn 的同类竞争对手,是一款现代包管理器。

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

  如果你对同一依赖包需要使用不同的版本,则仅有 版本之间不同的文件会被存储起来。例如,如果某个依赖包包含 100 个文件,其发布了一个新 版本,并且新版本中只有一个文件有修改,则 pnpm update 只需要添加一个 新文件到存储中,而不会因为一个文件的修改而保存依赖包的 所有文件。

  所有文件都保存在硬盘上的统一的位置。当安装软件包时,其包含的所有文件都会硬链接自此位置,而不会占用 额外的硬盘空间。这让你可以在项目之间方便地共享相同版本的依赖包。

这些前端新技术你很难再忽视了——pnpm(图1)

  可以看到,在多数场景下,pnpm 包安装的速度都是明显优于 npm/yarn,速度会快 2-3 倍。

  当使用 npm 安装依赖包时,所有软件包都将被提升到 node_modules 的 根目录下。

  幽灵依赖的定义是:子依赖提升造成的,虽然不会出现在package.json中(声明缺失),但是仍可以在项目中正常被 import,即可以访问非法(未声明的) npm 包。

  在package.json中,没有 B 依赖的声明,因为它是子依赖,被扁平化提升到了和 A 一个层级而已。

  虽然没有在package.json中声明,但在项目中引用 B 还是能正常工作的,如果某天某个版本的 A 依赖不再依赖 B 或者 B 的版本发生了变化,那么就会造成依赖缺失或兼容性问题。

  这样就取决于用户的安装顺序了,或者要删掉重装,否则导致扁平化处理中提升不一致,导致“不确定性”。

  在上例基础上,我们假设再新增两个依赖关系:A 和 D 都依赖B@1.0.0、C 和 E 都依赖B@2.0.0

  可以看到B@2.0会被安装两次,实际上无论提升B@1.0.0还是B@2.0.0,都会被重复安装。

  pnpm 则是通过使用符号链接的方式仅将项目的直接依赖项添加到 node_modules 的根目录下。既保证了安全性,又解决了非法访问依赖、不确定性、重复安装的问题。

这些前端新技术你很难再忽视了——pnpm(图2)

这些前端新技术你很难再忽视了——pnpm(图3)

  首先他看到了 yarn 对 npm 在一致性、安全性、离线安装和性能方面的问题的解决,然后再在这个基础上,采用硬链接和软链接的方式,提高了安装速度、节约了磁盘空间、避免了“依赖分身”和“幻影依赖”的问题。

联系专业的商务顾问,制定方案,专业设计,一对一咨询及其报价详情
服务热线服务热线 010-67952968
免费互联网咨询服务

联系我们 contact us
010-67952968