LIVE_STREAM_CONNECTED
NPM、Yarn、PNPM 包管理器指南
A
Mastermind
admin
Dimension
Linux
Timestamp
2025年12月21日
Node.js 生态的三大包管理器对比与使用指南。
NPM
Node.js 默认包管理器。
基础命令
# 初始化项目
npm init
npm init -y # 跳过问答
# 安装依赖
npm install # 安装所有依赖
npm install package # 安装包
npm install package@1.0.0 # 指定版本
npm install package -D # 开发依赖
npm install package -g # 全局安装
# 卸载
npm uninstall package
npm uninstall package -g
# 更新
npm update
npm update package
# 查看
npm list # 已安装包
npm list -g # 全局包
npm outdated # 过期包
npm view package # 包信息
# 运行脚本
npm run dev
npm run build
npm start # 运行 start 脚本
npm test # 运行 test 脚本
# 清理缓存
npm cache clean --force
配置
# 查看配置
npm config list
# 设置镜像
npm config set registry https://registry.npmmirror.com
# 恢复官方源
npm config set registry https://registry.npmjs.org
# 查看当前源
npm config get registry
package.json
{
"name": "my-app",
"version": "1.0.0",
"scripts": {
"dev": "vite",
"build": "vite build",
"start": "node dist/index.js",
"test": "vitest"
},
"dependencies": {
"express": "^4.18.0"
},
"devDependencies": {
"typescript": "^5.0.0"
}
}
Yarn
Facebook 开发的包管理器,更快更稳定。
安装
npm install -g yarn
基础命令
# 初始化
yarn init
yarn init -y
# 安装依赖
yarn # 安装所有依赖
yarn add package # 安装包
yarn add package@1.0.0 # 指定版本
yarn add package -D # 开发依赖
yarn global add package # 全局安装
# 卸载
yarn remove package
yarn global remove package
# 更新
yarn upgrade
yarn upgrade package
yarn upgrade-interactive # 交互式更新
# 查看
yarn list
yarn global list
yarn outdated
yarn info package
# 运行脚本
yarn dev
yarn build
yarn start
# 清理缓存
yarn cache clean
配置
# 设置镜像
yarn config set registry https://registry.npmmirror.com
# 查看配置
yarn config list
Yarn 2+ (Berry)
# 启用 Yarn 2
yarn set version berry
# 安装依赖
yarn install
# PnP 模式(零安装)
yarn config set nodeLinker pnp
PNPM
高效的包管理器,节省磁盘空间。
安装
npm install -g pnpm
基础命令
# 初始化
pnpm init
# 安装依赖
pnpm install # 安装所有依赖
pnpm add package # 安装包
pnpm add package@1.0.0 # 指定版本
pnpm add package -D # 开发依赖
pnpm add package -g # 全局安装
# 卸载
pnpm remove package
pnpm remove package -g
# 更新
pnpm update
pnpm update package
pnpm update -i # 交互式更新
# 查看
pnpm list
pnpm list -g
pnpm outdated
# 运行脚本
pnpm dev
pnpm build
pnpm run start
# 清理
pnpm store prune # 清理未使用的包
配置
# 设置镜像
pnpm config set registry https://registry.npmmirror.com
# 查看存储位置
pnpm store path
Workspace(Monorepo)
pnpm-workspace.yaml:
packages:
- 'packages/*'
- 'apps/*'
# 在所有包中运行命令
pnpm -r run build
# 在指定包中运行
pnpm --filter package-name run build
# 安装依赖到指定包
pnpm add lodash --filter package-name
命令对比
| 功能 | NPM | Yarn | PNPM |
|---|---|---|---|
| 安装所有依赖 | npm install | yarn | pnpm install |
| 添加依赖 | npm install pkg | yarn add pkg | pnpm add pkg |
| 添加开发依赖 | npm install pkg -D | yarn add pkg -D | pnpm add pkg -D |
| 全局安装 | npm install pkg -g | yarn global add pkg | pnpm add pkg -g |
| 卸载 | npm uninstall pkg | yarn remove pkg | pnpm remove pkg |
| 更新 | npm update | yarn upgrade | pnpm update |
| 运行脚本 | npm run dev | yarn dev | pnpm dev |
| 清理缓存 | npm cache clean | yarn cache clean | pnpm store prune |
Lock 文件
| 包管理器 | Lock 文件 |
|---|---|
| NPM | package-lock.json |
| Yarn | yarn.lock |
| PNPM | pnpm-lock.yaml |
.npmrc 配置
# 镜像源
registry=https://registry.npmmirror.com
# 私有源
@myorg:registry=https://npm.myorg.com
# 代理
proxy=http://proxy.example.com:8080
https-proxy=http://proxy.example.com:8080
# 保存精确版本
save-exact=true
# 自动安装 peer dependencies
auto-install-peers=true
版本号规则
{
"dependencies": {
"exact": "1.0.0", // 精确版本
"patch": "~1.0.0", // 允许补丁更新 1.0.x
"minor": "^1.0.0", // 允许次版本更新 1.x.x
"any": "*", // 任意版本
"range": ">=1.0.0 <2.0.0"
}
}
常用技巧
查看包大小
# 使用 bundlephobia
npx bundlephobia package-name
检查安全漏洞
npm audit
npm audit fix
yarn audit
pnpm audit
发布包
# 登录
npm login
# 发布
npm publish
# 发布 scoped 包
npm publish --access public
链接本地包
# 在包目录
npm link
# 在项目目录
npm link package-name
# 取消链接
npm unlink package-name
选择建议
- NPM:默认选择,生态最完整
- Yarn:需要更快速度和稳定性
- PNPM:磁盘空间敏感、Monorepo 项目
总结
三个包管理器核心功能相似,主要区别在于性能和磁盘占用。PNPM 通过硬链接节省空间,Yarn 提供更好的锁文件管理,NPM 是默认标准。根据项目需求选择即可。