开发者工具 · 命令速查

npm/yarn/pnpm 速查

三大包管理器命令对照

本地处理 · 不上传 免费 · 无需登录 无次数限制 累计 49 次使用
npm · yarn · pnpm · Cheatsheet
当前 PM列表与复制默认给该 PM
操 作 分 类安装 · 移除更新 · 运行脚本 · 初始化发布 · 查询 · 缓存清理 · 工作区 · 临时执行
操 作 全 表Gallery · 点卡片看 npm / yarn / pnpm 三种写法对照
点选左侧任一操作
查看 npm / yarn / pnpm 三种写法对照 · 说明 · 典型场景 · 相关操作
三 大 差 异 速 记Differences · 选 PM / 提速 / 对照要点
就绪 · 按操作组织 + npm/yarn/pnpm 三种写法对照 + PM 切换 + 场景检索 · 全程浏览器本地
第一节

关于本工具

About

刚切换包管理器时,最头疼的不是新命令怎么拼,而是旧项目的 npm install 到了 pnpm 环境该换成什么。这个对照表把 npm、yarn、pnpm 三个管理器的常用命令按操作类型对齐排列——安装依赖、更新包、运行脚本、管理缓存,同一种操作看同一行。所有数据预置在页面中,不发起任何网络请求,离线环境也能查。

使用场景

迁移项目锁版本

老项目用 npm 跑了一年,团队决定迁移到 pnpm 以节省磁盘空间。但 package-lock.json 和 pnpm-lock.yaml 格式不同,手动翻译一个 install 命令容易漏掉 --save-dev 或 --global 参数。对照本工具,把 npm install -D eslint 直接翻译成 pnpm add -D eslint,避免因参数不对导致依赖版本错乱,迁移后 CI 一次性通过。

新人入职配环境

刚毕业的前端实习生拿到公司 MacBook,要装 Vue 项目环境。教程里写 npm create vue@latest,但他之前自学用的是 yarn create vite。他不知道两个命令的 --template 参数是否等价。打开对照表,看到 npm create 对应 yarn create,且 pnpm create 也走同一套模板,直接选自己熟的 yarn 执行,省去半小时查文档的挫败感。

CI 脚本统一命令

公司三个项目分别用 npm、yarn、pnpm,CI 配置文件里要写三条不同的 install 命令。运维同事想合并成一条通用脚本,但记不住 yarn 的 --frozen-lockfile 对应 npm 的 --package-lock-only。翻出对照表,发现 npm ci 等价于 yarn install --frozen-lockfile 和 pnpm install --frozen-lockfile,直接写进模板,后续新项目无需再改 CI 配置。

排查幽灵依赖报错

用 npm 安装的 monorepo 项目在本地跑得好,上测试环境后报模块未找到。老手怀疑是 npm 的扁平 node_modules 导致幽灵依赖被意外引用。需要快速确认 pnpm 的严格依赖模式能否复现问题。对照表里找到 npm ls 和 pnpm ls --depth=0 的差异,用 pnpm 重新安装后果然报错消失,定位到是依赖提升导致的兼容性问题。

离线环境装包

客户内网服务器不能访问 npm registry,需要把开发机上的 node_modules 打包过去。但 npm pack 和 yarn pack 输出格式不同,同事用 npm pack 打的包在 pnpm add 时报错。对照表显示 pnpm 支持 --pack-destination 参数,且 yarn pack 输出的 .tgz 可以直接被 pnpm store add 读取,省去重新压缩的麻烦。

第二节

使用指南

Getting Started

使用步骤

  1. 1在左侧包管理器下拉菜单(npm / yarn / pnpm)中选当前使用的工具,右侧命令列表自动切换为对应语法
  2. 2在搜索框输入命令关键词(如 install、add),列表实时过滤,匹配项高亮显示
  3. 3点击任意命令行右侧的复制图标,命令文本自动写入剪贴板,底部出现短暂提示“已复制”
  4. 4展开命令行下方的“参数说明”折叠区,查看该命令的常用选项(如 --save-dev、--global)及示例

输入输出示例

输入输出说明
npm install lodashnpm install lodash yarn add lodash pnpm add lodash常规:最常用的安装依赖场景,验证三者的基本对应关系
npm uninstall lodashnpm uninstall lodash yarn remove lodash pnpm remove lodash常规:卸载依赖,验证 remove 与 uninstall 的命名差异
npm initnpm init yarn init pnpm init常规:初始化项目,三者命令完全一致,验证基础覆盖
npm run buildnpm run build yarn run build pnpm run build边界:run 命令在 yarn 中可省略为 yarn build,但本工具输出完整形式,避免用户误以为 yarn 不支持 run
npm install --global eslintnpm install -g eslint yarn global add eslint pnpm add -g eslint边界:全局安装,三者语法差异大(-g / global add / -g),易混淆
npm cinpm ci yarn install --frozen-lockfile pnpm install --frozen-lockfile易错:npm ci 是 CI 环境专用命令,yarn/pnpm 无直接对应,需用参数模拟,用户常误以为 yarn ci 存在
npm outdatednpm outdated yarn outdated pnpm outdated易错:三者命令完全一致,但输出格式不同(npm 表格 vs yarn 列表),本工具仅对照命令名,不涉及输出格式差异
npm audit fixnpm audit fix yarn audit fix pnpm audit fix边界:安全审计修复命令,pnpm 在 v7+ 才支持,低版本无此命令,用户需注意版本兼容

常见错误对照

1.全局安装与项目安装命令混淆

✗ 错误npm install -g lodash // 本意是项目依赖
✓ 修复npm install lodash

npm install -g 将包安装到全局 node_modules,项目里 require 找不到;项目依赖不加 -g 才写入当前目录的 node_modules 和 package.json。

2.yarn 运行脚本时漏掉 run

✗ 错误yarn dev // 假设 dev 是自定义脚本
✓ 修复yarn run dev

yarn 对内置命令(如 add、install)可省略 run,但自定义脚本必须显式写 yarn run,否则 yarn 会尝试当作内置命令执行导致报错。

3.pnpm 下包版本范围写法不兼容

✗ 错误pnpm add react@^18.0.0
✓ 修复pnpm add react@18.0.0 // 或 pnpm add react@latest

pnpm add 默认锁定精确版本,^~ 前缀会被忽略并报错;需要范围版本时应在 package.json 中手动编辑,或使用 pnpm add react@18.0.0 --save-exact 明确行为。

4.npm ci 与 npm install 混用导致锁文件被改

✗ 错误npm ci // 在已有 node_modules 的目录运行
✓ 修复先删除 node_modules 再 npm ci,或直接 npm install

npm ci 会删除 node_modules 并严格按 package-lock.json 安装,若锁文件与 package.json 不一致会报错;日常开发用 npm install 更灵活。

5.yarn resolutions 误写成 dependencies

✗ 错误"dependencies": { "lodash": "4.17.21" } // 想强制子依赖版本
✓ 修复"resolutions": { "lodash": "4.17.21" }

yarn resolutions 是顶层字段,用于覆盖子依赖版本;写在 dependencies 里只影响直接依赖,子依赖仍可能安装旧版。

6.pnpm workspace 中跨包引用路径错误

✗ 错误import { foo } from '../packages/utils' // 相对路径
✓ 修复import { foo } from '@myorg/utils' // 包名

pnpm workspace 通过软链接映射包名,应使用包名而非相对路径;否则 pnpm 不会触发依赖解析,导致版本不一致或构建失败。

7.npm outdated 与 npm update 的认知偏差

✗ 错误npm update // 期望更新到最新大版本
✓ 修复npm install <包名>@latest // 或手动改 package.json 后 npm install

npm update 只更新到 package.json 中声明的范围上限(如 ^1.0.0 最多到 1.x.x),不会跨大版本;要升级大版本需显式指定 @latest。

8.yarn 2+ (Berry) 下 node_modules 不存在导致脚本失败

✗ 错误node scripts/build.js // 假设 node_modules 存在
✓ 修复yarn node scripts/build.js // 或 yarn dlx ...

yarn Berry 默认使用 PnP 模式,不生成 node_modules;直接 node 命令找不到依赖,必须用 yarn node 或启用 nodeLinker: node-modules 回退。

第三节

工作原理

How It Works

核心公式

命令映射关系:npm <cmd> → yarn <cmd> → pnpm <cmd>

变量说明

  • npm <cmd>npm 包管理器的命令
  • yarn <cmd>Yarn 包管理器的对应命令
  • pnpm <cmd>pnpm 包管理器的对应命令

示例

安装依赖:npm install → yarn add → pnpm add。例如安装 lodash:npm install lodash → yarn add lodash → pnpm add lodash,三者均将 lodash 写入 package.json 并下载到 node_modules。

选择包管理器(npm / yarn / pnpm)输入常用命令(如 install / add)查表匹配(本地映射表)输出对照结果(三列命令对比)支持模糊搜索(实时过滤)命令详情展示(参数 / 示例)
用户交互 本地处理 数据查表

隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。

选择 打开 +新窗口 esc关闭