文章目录
- 前言
- 一、pnpm 常用的指令
- 1、必须死死记住的 pnpm 指令(🌟🌟🌟🌟🌟)
- 2、依赖安装相关
- 3、Script 相关
- 二、`exec` 和 `dlx`
- 三、排查依赖
- 四、Workspace / Monorepo(🌟🌟🌟🌟🌟)
- 五、Store 相关
前言
下面这份基本覆盖你日常前端开发里90% 的 pnpm 使用场景。
| 场景 | 指令 |
|---|---|
| 安装全部依赖 | pnpm install/pnpm i |
| 安装生产依赖 | pnpm add axios |
| 安装开发依赖 | pnpm add -D typescript |
| 删除依赖 | pnpm remove axios/pnpm rm axios |
| 更新依赖 | pnpm update/pnpm up |
| 查看过期依赖 | pnpm outdated |
| 查看已安装依赖 | pnpm list/pnpm ls |
| 查看某依赖为什么被安装 | pnpm why react |
| 运行 script | pnpm dev/pnpm build |
| 完整运行 script | pnpm run dev |
| 执行本地 CLI | pnpm exec eslint . |
| 临时执行 CLI | pnpm dlx create-vite |
| 创建项目 | pnpm create vite |
| 查看 store 路径 | pnpm store path |
| 清理 store | pnpm store prune |
一、pnpm 常用的指令
1、必须死死记住的 pnpm 指令(🌟🌟🌟🌟🌟)
最常用的一组,建议你直接形成肌肉记忆
pnpmipnpmaddaxiospnpmadd-Dtypescriptpnpmremove axiospnpmdevpnpmbuildpnpmexeceslint.pnpmdlx shadcn@latest init2、依赖安装相关
安装指定版本:
pnpmaddreact@19安装最新版:
pnpmaddreact@latest全局安装:
pnpmadd-gtypescript只安装生产依赖:
pnpminstall--prodCI 中严格按照 lockfile 安装:
pnpminstall--frozen-lockfile这个命令很重要。package.json和pnpm-lock.yaml对不上时会直接失败,适合 CI/CD。
3、Script 相关
假设package.json:
{"scripts":{"dev":"vite","build":"vite build","lint":"eslint .","test":"vitest"}}可以直接:
pnpmdevpnpmbuildpnpmlintpnpmtest一般不需要写:
pnpmrun dev不过两种都可以。
二、exec和dlx
这是最值得区分的两个命令。
项目已经安装 eslint:
pnpmadd-Deslint执行:
pnpmexeceslint.而如果工具没有安装,只想临时跑一次:
pnpmdlx create-vite记忆:
exec = 执行项目已有 CLI dlx = 临时下载 CLI 再执行三、排查依赖
查看 React:
pnpmlsreact查看依赖树:
pnpmls--depth2查看“谁引入了 lodash”:
pnpmwhy lodash这个排查安全漏洞、重复依赖、版本冲突时特别实用。
四、Workspace / Monorepo(🌟🌟🌟🌟🌟)
如果以后项目结构是:
project/ ├── apps/ │ ├── web │ └── admin ├── packages/ │ └── ui └── pnpm-workspace.yaml只运行 web:
pnpm--filterweb dev只给 web 安装 axios:
pnpm--filterwebaddaxios所有 workspace 执行 build:
pnpm-rbuild所有 workspace 执行 lint:
pnpm-rlint在 workspace 根目录安装公共开发依赖:
pnpmadd-Dprettier-w这里:
-r = recursive,批量执行 workspace --filter = 指定某个 workspace -w = workspace root这三个是 pnpm Monorepo 里最常用的。
五、Store 相关
查看 pnpm store:
pnpmstore path清理无用包:
pnpmstore prune不过平时不需要频繁 prune,磁盘空间需要清理时再用。
你现在最值得优先记住的其实就这 12 个:
pnpmipnpmaddxxxpnpmadd-Dxxxpnpmremove xxxpnpmupdatepnpmdevpnpmbuildpnpmexecxxxpnpmdlx xxxpnpmwhy xxxpnpm--filterxxx devpnpm-rbuild再配合理解三个文件:
package.json pnpm-lock.yaml pnpm-workspace.yaml后序:
- 这套掌握以后,普通 React/Vue 项目到 Monorepo 基本都够用了。