一、简介
-
区别差异
特性 npm yarn pnpm 速度 npm 5+ 使用 package-lock.json
提高速度,但仍不及 pnpm。快于 npm,得益于并行安装和缓存机制。 更快,占用更少磁盘空间,因为共享依赖采用硬链接或符号链接。 磁盘占用 下载依赖直接解压到 node_modules
中,占用空间较大。类似 npm,但稍加优化,重复依赖会复用缓存。 更省磁盘空间,依赖文件存储在全局共享目录,项目内用符号链接。 离线模式 需要在线安装,即使缓存了依赖也不能完全离线工作。 支持离线模式,已安装的依赖可通过缓存安装。 完美支持离线模式,缓存更高效。 锁定文件 package-lock.json
文件锁定依赖版本。yarn.lock
格式更简洁,版本锁定更严谨。使用 pnpm-lock.yaml
,兼顾效率与一致性。依赖解析 自动安装依赖,可能会出现子依赖版本冲突。 默认更好地解决依赖冲突,确保一致性。 采用去中心化模式,同一依赖的多个版本不会重复安装到子目录。 工作区支持 原生支持(需配置 workspaces
)。原生支持多包工作区,开发单体仓库时较方便。 原生支持多包工作区,性能优化更明显,且占用更少的磁盘空间。 独特功能 提供 npm audit
检测依赖漏洞等功能。提供 yarn dlx
等快捷功能。速度最快,省空间;还支持 --frozen-lockfile
精确安装锁定版本。 -
选择建议
场景 推荐工具 个人开发 pnpm:节省磁盘空间,安装速度快。 团队开发(已有 npm 或 yarn) npm 或 yarn:优先与团队保持一致。 大型项目(单体仓库、多包项目) pnpm 或 yarn:工作区支持更强。 兼容性优先 npm:最广泛使用,第三方工具支持最好。
二、安装方式
1、npm 的安装
npm
是 Node.js 自带的包管理工具,安装 Node.js 即可自动安装 npm
。
-
安装 Node.js
前往 Node.js 官方网站,根据操作系统下载对应版本的安装包,或使用 nvm 进行安装管理 。
验证安装:
$ npm -v
-
更新 npm
# 查看可用版本 $ npm view npm versions # 更新到最新版本(不带 @latest 默认最新版本) $ npm install -g npm@latest # 更新到指定版本 $ npm install -g npm@<版本号> $ npm install -g npm@9.8.1
2、yarn 的安装
可通过以下方式安装 yarn
:
-
通过 npm 安装
$ npm install -g yarn
更新:
# 查看可用版本 $ npm view yarn versions # 更新到最新版本(不带 @latest 默认最新版本) $ npm install -g yarn@latest # 更新到指定版本 $ npm install -g yarn@<版本号> $ npm install -g yarn@1.22.19
-
通过系统包管理工具
-
macOS: 附:# Mac Homebrew 安装与卸载,更推荐走
node
安装方式。$ brew install yarn
更新:
$ brew upgrade yarn
-
-
验证安装:
$ yarn -v
3、pnpm 的安装
pnpm
是一款现代、高效的包管理工具。
-
通过 npm 安装
$ npm install -g pnpm
更新:
# 查看可用版本 $ npm view pnpm versions # 更新到最新版本(不带 @latest 默认最新版本) $ npm install -g pnpm@latest # 更新到指定版本 $ npm install -g pnpm@<版本号> $ npm install -g pnpm@8.11.0
-
验证安装:
$ pnpm -v
三、常用初始化、更新版本指令
-
初始化指令
工具 指令 作用 npm npm install
或npm i
根据 package.json
文件安装项目中定义的所有依赖。yarn yarn install
或yarn
根据 package.json
和yarn.lock
安装项目依赖。pnpm pnpm install
或pnpm i
根据 package.json
和pnpm-lock.yaml
安装依赖,并使用硬链接节省空间和提高速度。 -
更新指令
工具 更新依赖到指定版本 npm $ npm install <包名>@<版本号>
yarn $ yarn add <包名>@<版本号>
pnpm $ pnpm add <包名>@<版本号>
-
示例:更新
react
到18.2.0
:- npm:
$ npm install react@18.2.0
- yarn:
$ yarn add react@18.2.0
- pnpm:
$ pnpm add react@18.2.0
- npm:
-
全局更新包
- npm:
$ npm install -g <包名>@<版本号>
- yarn:
$ yarn global add <包名>@<版本号>
- pnpm:
$ pnpm add -g <包名>@<版本号>
- npm:
四、清除缓存指令
-
指令
工具 清除缓存指令 npm $ npm cache clean --force
yarn $ yarn cache clean
pnpm $ pnpm store prune
-
说明:
$ npm cache clean --force
:强制清除缓存。$ yarn cache clean
:清除缓存目录中所有的已缓存包。$ pnpm store prune
:移除所有不再被使用的包(pnpm
的缓存目录称为“store”)。
-
查看缓存路径:
- npm:
$ npm config get cache
- yarn:
$ yarn cache dir
- pnpm:
$ pnpm store path
- npm: