编程技术文章分享与教程

网站首页 > 技术文章 正文

JavaScript包管理工具pnpm介绍 js importpackage

hmc789 2024-11-08 19:44:07 技术文章 2 ℃

本文向大家介绍一个JavaScript包管理工具:pnpm。

1.pnpm是什么

pnpm 是 Performant NPM 的缩写,是一个 JavaScript 包管理工具。 与npm和yarn类似,但主要侧重于节省磁盘空间、提高安装速度和node_modules的规范性。

2.pnpm 与 npm 相比的优点

1)高效存储

npm 和 pnpm 使用存储的方式有很大差异。

使用 npm时,相同依赖项的多个项目各自保留一个副本。 例如,如果您有 100 个本地项目使用名为 hoge 的 1 MB 包,则 hoge 将被复制 100 次,并将使用 100 MB 的计算机存储空间。

而pnpm会将这些依赖项集中在一个位置,每个项目都会创建一个到该位置的链接,从而节省磁盘空间。 如果你的本地环境中有 100 个项目使用名为 hoge 的 1 MB 包,则会创建 100 个存储在 pnpm 存储中的 hoge 链接,而 hoge 本身不会增加,从而来节省存储空间。

2)安装速度快

JavaScript 包管理工具分三步执行安装:

  1. Resolving:解析依赖:识别所有必需的依赖项并将其提取到存储中。
  2. Fetching:计算目录结构:node_modules目录结构是根据依赖关系计算出来的。
  3. Linking:链接依赖项:所有剩余的依赖项都会从存储中获取并硬链接到node_modules。

传统的包管理工具将所有待安装包放在一个串行的流程中。例如下面的例子,将安装三个软件包:hoge、fuga 和 piyo。 当hoge和fuga完成解析依赖关系时,hoge和fuga也不能进入下一个阶段,需要等piyo包解析完成。 换句话说,如果有一个包需要很长时间完成一个步骤,那么其他包就会处于等待状态。整体流程如下图:



pnpm 通过为每个安装包运行单独的流程来加快安装过程,如下图所示,以消除安装包之间的等待状态。

3.严格的node_modules

使用 npm 时,您可以访问项目的 package.json 中未列出的包。 例如,当您安装一个名为express的包时,会将相关包将被放置在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

而pnpm 只放置直接依赖包。 这可以防止您访问项目的 package.json 中未列出的包,从而防止不必要的依赖项导致的问题和错误。

4.对比

与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

?? - 通过插件

?

5.总结

与传统的包管理工具相比,pnpm 具有以下优点:

  • 存储高效
  • 包安装速度很快
  • 轻松防止依赖引起的错误

如果您对 npm 积怨已久,可以尝试 pnpm。

但是,与npm和yarn相比,互联网上提供的信息较少,你将不得不自己处理一些问题。

标签列表
最新留言