PNMP软件包经理:它是什么以及为什么要使用它 - 综合指南
#网络开发人员 #编码 #node #npm

有关接管NPM的新快速磁盘高效软件包管理器的所有内容。

- ·PNPM:新的NPM挑战者:发现PNPM的兴起以及为什么它席卷了开发世界。

·内部pnpm的魔术:揭开PNPM的内部工作及其独特的包装管理方法。

·开始使用PNPM:逐步指南,轻松地将PNPM整合到您的项目中。

** - 掌握PNPM CLI:**学习必需CLI命令,配置和快捷方式以增强您的开发工作流程。

PNPM:新的NPM和纱线挑战者

npm(节点软件包管理器)长期以来一直是行业标准,但是出现了新的竞争者:PNPM(固定节点软件包管理器)。 PNPM提供提高的速度,资源效率,有见地的日志,效率提高了3倍,将自己定位为NPM的可行替代品,展示了为什么NPM可能会落后。

在比较PNPM和纱线时,无论高速缓存类型(冷或热),PNPM在速度方面的表现都优于速度。 PNPM速度的关键在于其文件链接方法,在该方法中,它只是从全局存储中链接了文件,而YARN则采用文件复制方法。此外,PNPM可通过在磁盘上多次保存包装版本来确保有效的磁盘使用。

Source:pixelmatters

  • 清洁安装:第一次安装系统上没有缓存;
  • 重新安装:第一个安装后安装;
  • 使用高速缓存和锁紧列:删除node_modules并运行安装;
  • 使用缓存:删除node_modules,锁定文件,然后运行安装;
  • 使用lockfile:删除node_modules和cache,然后运行安装;
  • 使用缓存和node_modules:仅删除lockfile并安装增益;
  • 使用node_modules和lockfile:删除缓存并再次安装;
  • 使用node_modules:删除缓存和锁定文件,然后再次安装。

使用PNPM的弊端

由于其平坦的树结构,PNPM不支持NPM产生的锁定文件。 However, there exists a convenient command that enables the conversion of NPM/Yarn lock files into a pnpm-compatible format.

重要的是要注意,PNPM不能以捆绑依赖性发布包。但是,值得一提的是,即使在NPM上,使用捆绑依赖性也不是建议的做法。取而代之的是,首选的方法是采用软件包捆绑包,例如WebPack,lollup或eSbuild,以有效地处理捆绑过程。这确保了该项目的依赖关系更有效,更可管理的包装。

内部PNPM的魔术:

Symbolic Structure

使用NPM时,拥有100个具有相同依赖关系的项目将导致100个单独的副本保存在磁盘上。但是,PNPM通过将依赖关系存储在可调地理的商店中,从而采用更智能的方法,从而带来以下好处:

  1. 有效的存储利用率:

根据相同依赖关系的不同版本,PNPM仅通过添加与商店不同的文件来优化磁盘使用情况。假设依赖关系包含100个文件,而新版本仅引入一个文件中的更改。在这种情况下,运行“ PNPM Update”只会将修改的文件添加到商店,而不是克隆整个依赖项,大大减少了存储开销。

  1. 集中式文件存储:

而不是使用平坦的树结构PNPM使用符号链接结构,而是将所有依赖项文件整合到磁盘上的单个位置中。在安装过程中,PNPM创建了从此中央存储库到每个项目的硬链路,从而消除了对冗余副本的需求。这种创新的方法允许不同的项目共享同一版本的依赖项,并节省大量磁盘空间。

这些优化的累积结果是磁盘空间消耗的显着降低,与项目数量及其相关的依赖性成正比。此外,PNPM由于简化的方法而实现更快的安装,使其成为开发人员的高效软件包管理器。

开始使用PNPM:

安装

使用Windows PowerShell安装:

iwr https://get.pnpm.io/install.ps1 -useb | iex

使用NPM安装
·Node.js已经安装:
npm install -g pnpm
·node.js未安装(包含在exe中)
npm install -g @pnpm/exe

与巧克力
安装 choco install pnpm

  • pnpm安装

PNPM安装命令用于安装项目依赖项。它在可调地理的商店中创建了非平板node_modules结构,从而优化存储并提供更快的安装。它还支持存储库中的多包装安装。

pnpm install

  • pnpm添加

PNPM添加命令允许您在项目中添加新的依赖项。它会自动更新package.json文件并安装新软件包。

pnpm add

  • pnpm Update

PNPM Update命令有助于更新依赖关系到其最新版本。它有效地仅更新可添加内容的商店中更改的文件,从而减少所需的磁盘空间。

pnpm update

  • pnpm删除

要从项目中删除依赖项,您可以使用PNPM删除命令。它删除了指定的软件包并相应地更新了package.json文件。

pnpm remove

- pnpm列表

PNPM列表命令显示了项目依赖项的类似树的视图。它显示了所有已安装的软件包及其各自的版本。

pnpm list

- pnpm商店状态

pnpm商店状态命令提供了可调地理商店状态的概述,显示其大小和存储的软件包数量。

pnpm store status

-

要优化磁盘空间使用情况,您可以使用PNPM Store Prune命令。它从商店中删除了未参考的软件包。

pnmp store prune

- pnpm出版

PNPM Publish命令使开发人员能够发布其软件包以注册并与社区共享。当您使用PNPM发布软件包时,它会采用内容 - 可调性商店来优化发布过程。
PNPM没有为每个版本复制包装文件,而是链接商店中的常见文件,从而大大降低了已发布软件包的大小。这种聪明的方法会导致发布时间更快,并在注册表上使用更有效的存储使用情况,从而有助于更好的整体开发人员体验。

pnpm publish

PNPM工作区

pnpm的工作区功能使开发人员可以轻松地管理单个单位中的多个软件包。通过在存储库的根部定义一个软件包。JSON文件并将单个软件包指定为工作区,PNPM将它们视为相互依存的项目。
当您运行PNPM安装存储库的根部时,PNPM会为所有工作区安装依赖项,从而确保整个项目的一致性。这种集中式方法简化了开发,促进了代码共享并简化了复杂项目的维护。

{
 "name": "my-monorepo",
 "private": true,
 "workspaces": [
 "packages/*"
 ]
}