本文向大家介绍一个JavaScript包管理工具:pnpm。 pnpm 是 Performant NPM 的缩写,是一个 JavaScript 包管理工具。 与npm和yarn类似,但主要侧重于节省磁盘空间、提高安装速度和node_modules的规范性。 npm 和 pnpm 使用存储的方式有很大差异。 使用 npm时,相同依赖项的多个项目各自保留一个副本。 例如,如果您有 100 个本地项目使用名为 hoge 的 1 MB 包,则 hoge 将被复制 100 次,并将使用 100 MB 的计算机存储空间。 而pnpm会将这些依赖项集中在一个位置,每个项目都会创建一个到该位置的链接,从而节省磁盘空间。 如果你的本地环境中有 100 个项目使用名为 hoge 的 1 MB 包,则会创建 100 个存储在 pnpm 存储中的 hoge 链接,而 hoge 本身不会增加,从而来节省存储空间。 JavaScript 包管理工具分三步执行安装: 传统的包管理工具将所有待安装包放在一个串行的流程中。例如下面的例子,将安装三个软件包:hoge、fuga 和 piyo。 当hoge和fuga完成解析依赖关系时,hoge和fuga也不能进入下一个阶段,需要等piyo包解析完成。 换句话说,如果有一个包需要很长时间完成一个步骤,那么其他包就会处于等待状态。整体流程如下图: pnpm 通过为每个安装包运行单独的流程来加快安装过程,如下图所示,以消除安装包之间的等待状态。 使用 npm 时,您可以访问项目的 package.json 中未列出的包。 例如,当您安装一个名为express的包时,会将相关包将被放置在node_modules文件夹中,如下所示。 而pnpm 只放置直接依赖包。 这可以防止您访问项目的 package.json 中未列出的包,从而防止不必要的依赖项导致的问题和错误。 与npm和yarn相比,pnpm有以下功能差异。 功能 pnpm Yarn npm ワークスペースのサポート ?? ?? ?? 分离的node_modules ?? 默认 ?? ?? Peer自动安装 ?? ? ?? Plug'n'Play ?? ?? ? Zero-Installs ? ?? ? 补丁依赖 ?? ?? ? Node.js版本管理 ?? ? ? 支持锁定文件 ?? - pnpm-lock.yaml ?? - yarn.lock ?? - package-lock.json 支持覆盖 ?? ?? - resolutions ?? 关联存储 ?? ? ? 执行包 ?? - pnpm dlx ?? - yarn dlx ?? - npx 缓存的副作用 ?? ? ? 许可证显示 ?? - pnpm licenses list ?? - 通过插件 ? 与传统的包管理工具相比,pnpm 具有以下优点: 如果您对 npm 积怨已久,可以尝试 pnpm。 但是,与npm和yarn相比,互联网上提供的信息较少,你将不得不自己处理一些问题。1.pnpm是什么
2.pnpm 与 npm 相比的优点
1)高效存储
2)安装速度快
3.严格的node_modules
$ cd node_modules
$ ls -1
accepts
array-flatten
content-disposition
content-type
cookie
cookie-signature
debug
depd
destroy
ee-first
encodeurl
escape-html
etag
express
finalhandler
forwarded
fresh
http-errors
inherits
ipaddr.js
media-typer
merge-descriptors
methods
mime
mime-db
mime-types
ms
negotiator
on-finished
parseurl
path-to-regexp
proxy-addr
qs
range-parser
send
serve-static
setprototypeof
statuses
type-is
unpipe
utils-merge
vary
4.对比
5.总结