diff --git a/README.md b/README.md index 9166a43..88071b8 100644 --- a/README.md +++ b/README.md @@ -134,6 +134,7 @@ Quick Reference [package.json](./docs/package.json.md) [Yarn](./docs/yarn.md) [nvm](./docs/nvm.md) +[pnpm](./docs/pnpm.md) ## 工具 diff --git a/assets/pnpm.svg b/assets/pnpm.svg new file mode 100644 index 0000000..f3bc4cb --- /dev/null +++ b/assets/pnpm.svg @@ -0,0 +1,20 @@ + + + + + + + + + + diff --git a/docs/pnpm.md b/docs/pnpm.md new file mode 100644 index 0000000..df92b96 --- /dev/null +++ b/docs/pnpm.md @@ -0,0 +1,260 @@ +pnpm 备忘清单 +=== + +这是一份 [`pnpm`](https://pnpm.io/) 软件包管理器备忘单,其中列出了 `pnpm` 常用命令使用清单。 + +入门 +--- + +### pnpm 与 npm 命令比较 + +npm | pnpm | 说明 +:- | :- | :- +`npm install` | `pnpm install` | 安装依赖 +`npm init` | `pnpm init` | 创建 `package.json` 文件 +`npm install ` | `pnpm add ` | 安装包 +`npm install -g ` | `pnpm add -g ` | 全局安装包 +`npm update` | `pnpm update` | 更新包 +`npm cache clean` | `pnpm cache clean` | 清理缓存 + +### pnpm install + +```shell +--no-lockfile # 不生成 pnpm-lock.yaml 锁定文件 +--force # 强制覆盖现有的 node_modules +--frozen-lockfile # 忽略 pnpm-lock.yaml 中的更改 +--offline # 离线模式,不尝试从远程仓库安装包 +--shamefully-hoist # 类似于 npm 的 hoist 行为 +--strict-peer-dependencies # 严格检查 peer dependencies +``` + +这些选项可用于 `pnpm install`。 + +### pnpm add + +```shell +--save # 将包添加到 dependencies +--save-dev # 将包添加到 devDependencies +--global # 全局安装包 +--exact # 安装精确版本号的包 +--shamefully-hoist # 类似于 npm 的 hoist 行为 +--strict-peer-dependencies # 严格检查 peer dependencies +``` + +这些选项可用于 `pnpm add`。 + +### pnpm remove + +```shell +# 从依赖中删除包 +pnpm remove +``` + +### pnpm update + +```shell +# 更新所有包 +pnpm update +# 更新特定包 +pnpm update +# 更新到最新版本(包括 major 版本) +pnpm update --latest +``` + +### pnpm list + +```shell +# 列出所有已安装的包 +pnpm list +# 列出全局安装的包 +pnpm list -g +# 查找过时的包 +pnpm outdated +``` + +### pnpm cache + +```shell +# 清理 pnpm 缓存 +pnpm cache clean +# 查看缓存中所有的包 +pnpm cache list +``` + +### pnpm why + +```shell +# 显示为什么安装了某个包 +pnpm why +``` + +示例 +--- + +### 安装包 + +```bash +# 将包添加到“dependencies” +pnpm add +# 将包添加到“devDependencies” +pnpm add -D +# 将包作为精确版本添加 +pnpm add --exact +# 在全局范围内安装包 +pnpm add -g +# 安装特定版本的包 +pnpm add @ +``` + +### 移除包 + +```bash +pnpm remove +``` + +### 查看包 + +```bash +# 列出已安装的包 +pnpm list +# 列出顶级安装的包 +pnpm list --depth 0 +# 列出全局安装的包 +pnpm list -g +# 根据模式和深度列出包 +pnpm list --pattern "lodash" --depth 1 +``` + +### 清除 + +```bash +# 清理 node_modules 并删除不必要的文件 +pnpm prune +# 检查过时的包 +pnpm outdated +``` + +### 信息 + +```bash +# 显示关于安装包的原因的信息 +pnpm why +``` + +### 清理缓存 + +```bash +# 清除 pnpm 的全局缓存 +pnpm cache clean +``` + +此外,您可以指定一个或多个要清理的包。 + +Monorepo +--- + +### 创建 Monorepo 工作区 + +1. 创建一个新的 pnpm 工作区: + +```bash +pnpm init -w +``` + +这将在项目的根目录中创建一个 `pnpm-workspace.yaml` 文件,内容如下: + +```yaml +packages: + - 'packages/**' + - 'apps/**' +``` + +2. 在 `pnpm-workspace.yaml` 中定义您的工作区结构: + +```yaml +packages: + - 'packages/*' + - 'apps/*' +``` + +### 添加包到 Monorepo 工作区 + +```bash +# 在工作区中添加包 +pnpm add -w +``` + +### 运行脚本 + +```bash +# 在所有包中运行脚本 +pnpm -r run