包管理工具速查表
版本信息
| 工具 | 当前主要版本 | 发布时间 |
|---|---|---|
| npm | 11.x | 2024年12月 |
| pnpm | 10.x | 2025年 |
| yarn | 4.x | 2023年10月 |
| Bun | 1.2.x | 持续更新 |
命令对比
基本操作
| 操作 | npm | pnpm | yarn | Bun |
|---|---|---|---|---|
| 初始化项目 | npm init | pnpm init | yarn init | bun init |
| 安装依赖 | npm install | pnpm install | yarn | bun install |
| 安装包 | npm install <pkg> | pnpm add <pkg> | yarn add <pkg> | bun add <pkg> |
| 安装开发依赖 | npm install -D <pkg> | pnpm add -D <pkg> | yarn add -D <pkg> | bun add -D <pkg> |
| 全局安装 | npm install -g <pkg> | pnpm add -g <pkg> | yarn global add <pkg> | bun add -g <pkg> |
| 删除包 | npm uninstall <pkg> | pnpm remove <pkg> | yarn remove <pkg> | bun remove <pkg> |
| 更新包 | npm update | pnpm update | yarn upgrade | bun update |
| 检查过期 | npm outdated | pnpm outdated | yarn outdated | bun outdated |
脚本与执行
| 操作 | npm | pnpm | yarn | Bun |
|---|---|---|---|---|
| 运行脚本 | npm run <script> | pnpm run <script> | yarn <script> | bun <script> |
| 执行包命令 | npx <cmd> | pnpm dlx <cmd> | yarn dlx <cmd> | bunx <cmd> |
信息查询
| 操作 | npm | pnpm | yarn | Bun |
|---|---|---|---|---|
| 查看依赖 | npm list | pnpm list | yarn list | bun pm ls |
| 查看全局依赖 | npm list -g --depth=0 | pnpm list -g --depth=0 | yarn global list | bun pm ls -g |
| 查看依赖原因 | - | pnpm why <pkg> | yarn why <pkg> | bun pm ls |
| 查看包信息 | npm view <pkg> | pnpm view <pkg> | yarn info <pkg> | bun pm ls |
配置与缓存
| 操作 | npm | pnpm | yarn | Bun |
|---|---|---|---|---|
| 查看配置 | npm config list | pnpm config list | yarn config list | bun fig |
| 设置镜像源 | npm config set registry <url> | pnpm config set registry <url> | yarn config set registry <url> | bunfig.toml 配置 |
| 清除缓存 | npm cache clean --force | pnpm store prune | yarn cache clean | bun pm cache rm |
发布与版本
| 操作 | npm | pnpm | yarn | Bun |
|---|---|---|---|---|
| 登录 | npm login | pnpm login | yarn login | bun login |
| 发布 | npm publish | pnpm publish | yarn publish | bun publish |
| 发布预发布版本 | npm publish --tag beta | pnpm publish --tag beta | yarn publish --tag beta | bun publish --tag beta |
| 取消弃用 | npm undeprecate <pkg> | - | - | - |
| 版本更新 | npm version <type> | - | yarn version <type> | - |
CI/CD
| 操作 | npm | pnpm | yarn | Bun |
|---|---|---|---|---|
| 确定性安装 | npm ci | pnpm install --frozen-lockfile | yarn install --frozen-lockfile | bun install --frozen-lockfile / bun ci |
| 安全审计 | npm audit | pnpm audit | yarn audit | trustedDependencies |
平台特定选项
| 操作 | pnpm | Bun |
|---|---|---|
| 指定 CPU 架构 | pnpm install --cpu=arm64 | bun install --cpu=arm64 |
| 指定操作系统 | pnpm install --os=linux | bun install --os=linux |
| 指定 libc | pnpm install --libc=musl | - |
安全选项
| 操作 | pnpm | Bun |
|---|---|---|
| 最小发布年龄 | minimumReleaseAge=1440 | bun install --min-release-age=3600 |
| 添加可信依赖 | allowBuilds 配置 | bun add --trust <pkg> |
| 阻止生命周期脚本 | 默认阻止(pnpm 10+) | 默认阻止 |
| 阻止降级 | trustPolicy=no-downgrade | - |
Workspace
| 操作 | npm | pnpm | yarn | Bun |
|---|---|---|---|---|
| 执行 workspace 命令 | npm run <script> -w <pkg> | pnpm --filter <pkg> run <script> | yarn workspace <pkg> <script> | bun --filter <pkg> run <script> |
| 所有 workspace 执行 | npm run <script> --workspaces | pnpm -r run <script> | yarn workspaces run <script> | bun --workspaces run <script> |
安全功能对比
| 功能 | npm | pnpm | yarn | Bun |
|---|---|---|---|---|
| 默认阻止生命周期脚本 | ✗ | ✓ (v10+) | ✗ | ✓ |
| 最小发布年龄限制 | ✗ | ✓ | ✗ | ✓ |
| 可信依赖配置 | ✗ | ✓ (allowBuilds) | ✗ | ✓ (trustedDependencies) |
| 阻止锁文件降级 | ✗ | ✓ (trustPolicy) | ✓ (Hardened Mode) | ✗ |
| 供应链攻击防护 | audit | minimumReleaseAge | Hardened Mode | minimumReleaseAge |
锁文件
| 工具 | 锁文件 |
|---|---|
| npm | package-lock.json |
| pnpm | pnpm-lock.yaml |
| yarn | yarn.lock |
| Bun | bun.lock (文本格式,v1.2+) |
配置文件
| 工具 | 配置文件 |
|---|---|
| npm | .npmrc |
| pnpm | .npmrc |
| yarn 1 | .yarnrc |
| yarn 2+ | .yarnrc.yml |
| Bun | bunfig.toml |
版本号符号
| 符号 | 含义 | 示例 |
|---|---|---|
^ | 兼容版本 | ^1.2.3 → >=1.2.3 <2.0.0 |
~ | 近似版本 | ~1.2.3 → >=1.2.3 <1.3.0 |
> | 大于 | >1.2.3 |
>= | 大于等于 | >=1.2.3 |
< | 小于 | <1.2.3 |
<= | 小于等于 | <=1.2.3 |
* | 任意版本 | * |
| 无符号 | 精确版本 | 1.2.3 |
常用镜像源
| 名称 | 地址 |
|---|---|
| 官方 | https://registry.npmjs.org |
| 淘宝 | https://registry.npmmirror.com |
| 腾讯 | https://mirrors.cloud.tencent.com/npm/ |
| 华为 | https://repo.huaweicloud.com/repository/npm/ |
package.json 常用字段
{
"name": "package-name",
"version": "1.0.0",
"description": "Package description",
"main": "index.js",
"module": "index.mjs",
"types": "index.d.ts",
"bin": {
"cli-name": "./bin/cli.js"
},
"scripts": {
"start": "node index.js",
"test": "jest",
"build": "webpack"
},
"dependencies": {
"lodash": "^4.17.21"
},
"devDependencies": {
"jest": "^29.5.0"
},
"peerDependencies": {
"react": ">=16.8.0"
},
"optionalDependencies": {
"fsevents": "^2.3.0"
},
"engines": {
"node": ">=18.0.0"
},
"files": [
"dist",
"lib"
],
"keywords": ["keyword1", "keyword2"],
"author": "Author Name",
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/user/repo"
},
"bugs": {
"url": "https://github.com/user/repo/issues"
},
"homepage": "https://github.com/user/repo#readme"
}
pnpm 安全配置示例
# .npmrc
# 最小发布年龄(分钟)
minimumReleaseAge=1440
# 排除特定包
minimumReleaseAgeExclude=
webpack
react
# 阻止锁文件降级
trustPolicy=no-downgrade
# 阻止异国情调依赖
blockExoticSubdeps=true
# 允许构建的包
allowBuilds:
esbuild: true
sharp: true
Bun 安全配置示例
# bunfig.toml
[install]
# 最小发布年龄(秒)
minimumReleaseAge = 86400
# 可信依赖
trustedDependencies = ["esbuild", "sharp"]
性能对比
以下是安装同一项目的依赖所需时间(仅供参考,实际性能因项目大小和网络环境而异):
| 工具 | 首次安装 | 有缓存 | 磁盘占用 |
|---|---|---|---|
| npm | ~30s | ~10s | 100%(基准) |
| pnpm | ~15s | ~5s | ~30%(全局存储) |
| yarn | ~20s | ~5s | 100% |
| Bun | ~1s | ~0.5s | ~50%(全局缓存) |
选择建议
| 场景 | 推荐工具 | 理由 |
|---|---|---|
| 新项目 | Bun / pnpm | 性能最优,安全默认 |
| 单体仓库 | Bun / pnpm | 原生支持,功能完善 |
| 兼容性要求高 | npm | 最广泛兼容 |
| 企业级项目 | pnpm / yarn | 可控性强,安全审计完善 |
| 开源项目 | npm | 用户无需安装额外工具 |
| 追求极致性能 | Bun | 安装速度快 25 倍以上 |
| 安全敏感项目 | pnpm 10+ | 安全默认,多层防护 |
| CI/CD 环境 | 使用对应工具的确定性安装命令 | 确保一致性 |