230 lines
3.4 KiB
Markdown
230 lines
3.4 KiB
Markdown
---
|
||
name: pnpm-cli-commands
|
||
description: 用于包管理、运行脚本及工作区操作的核心 pnpm 命令
|
||
---
|
||
|
||
# pnpm CLI 命令
|
||
|
||
pnpm 提供了一套功能全面的 CLI,用于包管理,其命令与 npm/yarn 类似,但拥有独特的功能。
|
||
|
||
## 安装命令
|
||
|
||
### 安装所有依赖
|
||
```bash
|
||
pnpm install
|
||
# 或
|
||
pnpm i
|
||
```
|
||
|
||
### 添加依赖
|
||
```bash
|
||
# 生产依赖
|
||
pnpm add <pkg>
|
||
|
||
# 开发依赖
|
||
pnpm add -D <pkg>
|
||
pnpm add --save-dev <pkg>
|
||
|
||
# 可选依赖
|
||
pnpm add -O <pkg>
|
||
|
||
# 全局包
|
||
pnpm add -g <pkg>
|
||
|
||
# 指定版本
|
||
pnpm add <pkg>@<version>
|
||
pnpm add <pkg>@next
|
||
pnpm add <pkg>@^1.0.0
|
||
```
|
||
|
||
### 移除依赖
|
||
```bash
|
||
pnpm remove <pkg>
|
||
pnpm rm <pkg>
|
||
pnpm uninstall <pkg>
|
||
pnpm un <pkg>
|
||
```
|
||
|
||
### 更新依赖
|
||
```bash
|
||
# 更新全部
|
||
pnpm update
|
||
pnpm up
|
||
|
||
# 更新指定包
|
||
pnpm update <pkg>
|
||
|
||
# 更新到最新版(忽略 semver)
|
||
pnpm update --latest
|
||
pnpm up -L
|
||
|
||
# 交互式更新
|
||
pnpm update --interactive
|
||
pnpm up -i
|
||
```
|
||
|
||
## 脚本命令
|
||
|
||
### 运行脚本
|
||
```bash
|
||
pnpm run <script>
|
||
# 或简写
|
||
pnpm <script>
|
||
|
||
# 向脚本传递参数
|
||
pnpm run build -- --watch
|
||
|
||
# 若脚本存在则运行(缺失时不报错)
|
||
pnpm run --if-present build
|
||
```
|
||
|
||
### 执行二进制文件
|
||
```bash
|
||
# 运行本地二进制文件
|
||
pnpm exec <command>
|
||
|
||
# 示例
|
||
pnpm exec eslint .
|
||
```
|
||
|
||
### dlx —— 无需安装直接运行
|
||
```bash
|
||
# 类似于 npx,但专为 pnpm 设计
|
||
pnpm dlx <pkg>
|
||
|
||
# 示例
|
||
pnpm dlx create-vite my-app
|
||
pnpm dlx degit user/repo my-project
|
||
```
|
||
|
||
## 工作区命令
|
||
|
||
### 在所有包中运行
|
||
```bash
|
||
# 在所有工作区包中运行脚本
|
||
pnpm -r run <script>
|
||
pnpm --recursive run <script>
|
||
|
||
# 在指定包中运行
|
||
pnpm --filter <pattern> run <script>
|
||
|
||
# 示例
|
||
pnpm --filter "./packages/**" run build
|
||
pnpm --filter "!./packages/internal/**" run test
|
||
pnpm --filter "@myorg/*" run lint
|
||
```
|
||
|
||
### 过滤模式
|
||
```bash
|
||
# 按包名过滤
|
||
pnpm --filter <pkg-name> <command>
|
||
pnpm --filter "@scope/pkg" build
|
||
|
||
# 按目录过滤
|
||
pnpm --filter "./packages/core" test
|
||
|
||
# 某个包的依赖项
|
||
pnpm --filter "...@scope/app" build
|
||
|
||
# 某个包的上游依赖方
|
||
pnpm --filter "@scope/core..." test
|
||
|
||
# 自指定提交/分支以来发生变更的包
|
||
pnpm --filter "...[origin/main]" build
|
||
```
|
||
|
||
## 其他实用命令
|
||
|
||
### 链接包
|
||
```bash
|
||
# 链接全局包
|
||
pnpm link --global
|
||
pnpm link -g
|
||
|
||
# 使用已链接的包
|
||
pnpm link --global <pkg>
|
||
```
|
||
|
||
### 打补丁
|
||
```bash
|
||
# 为某个包创建补丁
|
||
pnpm patch <pkg>@<version>
|
||
|
||
# 编辑后提交补丁
|
||
pnpm patch-commit <path>
|
||
|
||
# 移除补丁
|
||
pnpm patch-remove <pkg>
|
||
```
|
||
|
||
### 存储管理
|
||
```bash
|
||
# 显示存储路径
|
||
pnpm store path
|
||
|
||
# 移除未引用的包
|
||
pnpm store prune
|
||
|
||
# 检查存储完整性
|
||
pnpm store status
|
||
```
|
||
|
||
### 其他命令
|
||
```bash
|
||
# 干净安装(类似 npm ci)
|
||
pnpm install --frozen-lockfile
|
||
|
||
# 列出已安装的包
|
||
pnpm list
|
||
pnpm ls
|
||
|
||
# 为什么安装了这个包?
|
||
pnpm why <pkg>
|
||
|
||
# 过时的包
|
||
pnpm outdated
|
||
|
||
# 安全漏洞审计
|
||
pnpm audit
|
||
|
||
# 重新构建原生模块
|
||
pnpm rebuild
|
||
|
||
# 从 npm/yarn lock 文件导入
|
||
pnpm import
|
||
|
||
# 创建 tarball
|
||
pnpm pack
|
||
|
||
# 发布包
|
||
pnpm publish
|
||
```
|
||
|
||
## 常用标志
|
||
|
||
```bash
|
||
# 忽略脚本
|
||
pnpm install --ignore-scripts
|
||
|
||
# 优先使用离线缓存
|
||
pnpm install --prefer-offline
|
||
|
||
# 严格的 peer 依赖检查
|
||
pnpm install --strict-peer-dependencies
|
||
|
||
# 仅安装生产依赖
|
||
pnpm install --prod
|
||
pnpm install -P
|
||
|
||
# 不安装可选依赖
|
||
pnpm install --no-optional
|
||
```
|
||
|
||
<!--
|
||
参考来源:
|
||
- https://pnpm.io/cli/install
|
||
- https://pnpm.io/cli/add
|
||
- https://pnpm.io/cli/run
|
||
- https://pnpm.io/filtering
|
||
-->
|