这是一份 pnpm 软件包管理器备忘单,其中列出了 pnpm 常用命令使用清单。

入门

pnpm 与 npm 命令比较

npm pnpm 说明
npm install pnpm install 安装依赖
npm init pnpm init 创建 package.json 文件
npm install <package> pnpm add <package> 安装包
npm install -g <package> pnpm add -g <package> 全局安装包
npm update pnpm update 更新包
npm cache clean pnpm cache clean 清理缓存

参考 npm 备忘清单

pnpm list

1
2
3
4
5
6
# 列出所有已安装的包
pnpm list
# 列出全局安装的包
pnpm list -g
# 查找过时的包
pnpm outdated

pnpm why

1
2
# 显示为什么安装了某个包
pnpm why <package>

pnpm install

pnpm 说明
--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

pnpm 说明
--save 将包添加到 dependencies
--save-dev 将包添加到 devDependencies
--global 全局安装包
--exact 安装精确版本号的包
--shamefully-hoist 类似于 npm 的 hoist 行为
--strict-peer-dependencies 严格检查 peer dependencies

这些选项可用于 pnpm add

pnpm update

1
2
3
4
5
6
# 更新所有包
pnpm update
# 更新特定包
pnpm update <package>
# 更新到最新版本(包括 major 版本)
pnpm update --latest

pnpm remove

1
2
3
4
5
6
# 从依赖中删除包
pnpm remove <package>
# 删除全局依赖包
pnpm remove -g create-react-app
# 删除特定版本的依赖包
pnpm remove lodash@4.17.21

pnpm cache

1
2
3
4
# 清理 pnpm 缓存
pnpm cache clean
# 查看缓存中所有的包
pnpm cache list

示例

安装包

1
2
3
4
5
6
7
8
9
10
# 将包添加到“dependencies”
pnpm add <package>
# 将包添加到“devDependencies”
pnpm add -D <package>
# 将包作为精确版本添加
pnpm add --exact <package>
# 在全局范围内安装包
pnpm add -g <package>
# 安装特定版本的包
pnpm add <package>@<version>

移除包

1
2
3
4
5
6
7
pnpm remove <package>
# 删除多个依赖包
pnpm remove lodash express
# 删除全局依赖包
pnpm remove -g create-react-app
# 删除特定版本的依赖包
pnpm remove lodash@4.17.21

查看包

1
2
3
4
5
6
7
8
# 列出已安装的包
pnpm list
# 列出顶级安装的包
pnpm list --depth 0
# 列出全局安装的包
pnpm list -g
# 根据模式和深度列出包
pnpm list --pattern "lodash" --depth 1

清除

1
2
3
4
# 清理 node_modules 并删除不必要的文件
pnpm prune
# 检查过时的包
pnpm outdated

信息

1
2
# 显示关于安装包的原因的信息
pnpm why <package>

清理缓存

1
2
# 清除 pnpm 的全局缓存
pnpm cache clean

此外,您可以指定一个或多个要清理的包。

Monorepo

创建 Monorepo 工作区

  • 创建一个新的 pnpm 工作区:

    1
    pnpm init -w
  • 将在项目的根目录中创建一个 pnpm-workspace.yaml 文件,内容如下:

    1
    2
    3
    packages:
    - 'packages/**'
    - 'apps/**'
  • pnpm-workspace.yaml 中定义您的工作区结构:

    1
    2
    3
    packages:
    - 'packages/*'
    - 'apps/*'

添加包到 Monorepo 工作区

1
pnpm add <package> -w # 在工作区中添加包

运行脚本

1
2
3
4
5
6
# 在所有包中运行脚本
pnpm -r run <script>
# 仅在某个包中运行脚本
pnpm --filter <package> run <script>
# 在某个包及其依赖中运行脚本
pnpm --filter <package>... run <script>

添加工作区范围的依赖

1
2
3
4
# 添加依赖到工作区根目录
pnpm add <package> -w
# 添加开发依赖到工作区根目录
pnpm add -D <package> -w

创建新的包

packages 目录中创建新的包,例如:

1
2
3
mkdir packages/new-package
cd packages/new-package
pnpm init

链接本地包

1
2
3
4
# 将本地包链接到当前工作区
pnpm link <local-package-path>
# 链接工作区中的包
pnpm add <local-package-name> --workspace

高级用法

工作区

1
2
3
4
# 创建工作区
pnpm init -w
# 在工作区中添加包
pnpm add <package> -w

链接

1
2
3
4
# 链接一个全局包到当前项目
pnpm link <package>
# 链接本地包到全局
pnpm link --global <package>

运行脚本

1
2
3
4
# 运行 package.json 中的脚本
pnpm run <script>
# 运行根目录中的包的脚本
pnpm run -w <script>

另见


评论
avatar
竹山一叶
技术分享 个人心得
Follow Me
公告
欢迎光临小站,这里是我日常工作和学习中收集和整理的总结,希望能对你有所帮助:)

本站的内容经过个人加工总结而来,也参考了网友们分享的资料,如有侵权,请第一时间联系我,我将及时进行修改或删除😊
文章归档文章分类文章标签复制本文标题复制本文地址
随便逛逛