跳到主要内容

包管理工具速查表

版本信息

工具当前主要版本发布时间
npm11.x2024年12月
pnpm10.x2025年
yarn4.x2023年10月
Bun1.2.x持续更新

命令对比

基本操作

操作npmpnpmyarnBun
初始化项目npm initpnpm inityarn initbun init
安装依赖npm installpnpm installyarnbun 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 updatepnpm updateyarn upgradebun update
检查过期npm outdatedpnpm outdatedyarn outdatedbun outdated

脚本与执行

操作npmpnpmyarnBun
运行脚本npm run <script>pnpm run <script>yarn <script>bun <script>
执行包命令npx <cmd>pnpm dlx <cmd>yarn dlx <cmd>bunx <cmd>

信息查询

操作npmpnpmyarnBun
查看依赖npm listpnpm listyarn listbun pm ls
查看全局依赖npm list -g --depth=0pnpm list -g --depth=0yarn global listbun pm ls -g
查看依赖原因-pnpm why <pkg>yarn why <pkg>bun pm ls
查看包信息npm view <pkg>pnpm view <pkg>yarn info <pkg>bun pm ls

配置与缓存

操作npmpnpmyarnBun
查看配置npm config listpnpm config listyarn config listbun fig
设置镜像源npm config set registry <url>pnpm config set registry <url>yarn config set registry <url>bunfig.toml 配置
清除缓存npm cache clean --forcepnpm store pruneyarn cache cleanbun pm cache rm

发布与版本

操作npmpnpmyarnBun
登录npm loginpnpm loginyarn loginbun login
发布npm publishpnpm publishyarn publishbun publish
发布预发布版本npm publish --tag betapnpm publish --tag betayarn publish --tag betabun publish --tag beta
取消弃用npm undeprecate <pkg>---
版本更新npm version <type>-yarn version <type>-

CI/CD

操作npmpnpmyarnBun
确定性安装npm cipnpm install --frozen-lockfileyarn install --frozen-lockfilebun install --frozen-lockfile / bun ci
安全审计npm auditpnpm audityarn audittrustedDependencies

平台特定选项

操作pnpmBun
指定 CPU 架构pnpm install --cpu=arm64bun install --cpu=arm64
指定操作系统pnpm install --os=linuxbun install --os=linux
指定 libcpnpm install --libc=musl-

安全选项

操作pnpmBun
最小发布年龄minimumReleaseAge=1440bun install --min-release-age=3600
添加可信依赖allowBuilds 配置bun add --trust <pkg>
阻止生命周期脚本默认阻止(pnpm 10+)默认阻止
阻止降级trustPolicy=no-downgrade-

Workspace

操作npmpnpmyarnBun
执行 workspace 命令npm run <script> -w <pkg>pnpm --filter <pkg> run <script>yarn workspace <pkg> <script>bun --filter <pkg> run <script>
所有 workspace 执行npm run <script> --workspacespnpm -r run <script>yarn workspaces run <script>bun --workspaces run <script>

安全功能对比

功能npmpnpmyarnBun
默认阻止生命周期脚本✓ (v10+)
最小发布年龄限制
可信依赖配置✓ (allowBuilds)✓ (trustedDependencies)
阻止锁文件降级✓ (trustPolicy)✓ (Hardened Mode)
供应链攻击防护auditminimumReleaseAgeHardened ModeminimumReleaseAge

锁文件

工具锁文件
npmpackage-lock.json
pnpmpnpm-lock.yaml
yarnyarn.lock
Bunbun.lock (文本格式,v1.2+)

配置文件

工具配置文件
npm.npmrc
pnpm.npmrc
yarn 1.yarnrc
yarn 2+.yarnrc.yml
Bunbunfig.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~10s100%(基准)
pnpm~15s~5s~30%(全局存储)
yarn~20s~5s100%
Bun~1s~0.5s~50%(全局缓存)

选择建议

场景推荐工具理由
新项目Bun / pnpm性能最优,安全默认
单体仓库Bun / pnpm原生支持,功能完善
兼容性要求高npm最广泛兼容
企业级项目pnpm / yarn可控性强,安全审计完善
开源项目npm用户无需安装额外工具
追求极致性能Bun安装速度快 25 倍以上
安全敏感项目pnpm 10+安全默认,多层防护
CI/CD 环境使用对应工具的确定性安装命令确保一致性