Pnpm Monorepo、TurboRepo 和 Changeset 可以显著提升项目的可维护性、版本控制以及发布流程。以下是这些工具的使用方法及示例,帮助你高效地进行项目管理。
1. Pnpm Monorepo
Pnpm 是一种高效的 JavaScript 包管理工具,支持 Monorepo 管理。它能够让你在单一的仓库中管理多个包,提高依赖管理效率。
安装 Pnpm
首先,确保你已经安装了 Pnpm。可以通过以下命令进行安装:
npm install -g pnpm
初始化 Monorepo
使用 Pnpm 创建一个 Monorepo 项目结构:
pnpm init
然后,设置一个工作区(workspace),在 pnpm-workspace.yaml
文件中定义项目的子包:
packages: - 'packages/*'
- 'libs/*'
你可以在 packages/
目录下创建多个子包或模块,在 libs/
目录下管理共享库。
安装依赖
在 Monorepo 根目录下运行以下命令安装依赖:
pnpm install
Pnpm 会自动管理各个子包之间的依赖关系,并创建符号链接。
管理工作区包的依赖
在某个包内添加依赖时,可以使用:pnpm add <package-name>
这会将依赖添加到该包的 node_modules
中,同时更新根目录的 pnpm-lock.yaml
文件。
2. TurboRepo
TurboRepo 是一个高效的构建系统,通常和 Monorepo 一起使用,能够加速前端和后端的构建过程。
安装 TurboRepo
首先,你需要在 Monorepo 根目录中安装 TurboRepo:
pnpm add turbo -D -w
然后,在根目录下创建一个 turbo.json
配置文件
{ "pipeline": { "build": { "dependsOn": ["^build"] }, "dev": { "dependsOn": ["build"] } } }
配置任务
在 turbo.json
文件中,你可以定义构建(build)、开发(dev)等任务的流水线。上面的配置定义了构建任务和开发任务的依赖关系。
运行 TurboRepo 构建任务
通过 TurboRepo 运行构建任务:
pnpm turbo run build
TurboRepo 会优化构建流程,缓存之前的构建结果,避免重复构建相同的内容,提高效率。
3. Changeset
Changeset 是一个工具,用于管理 Monorepo 中的版本控制和发布流程,帮助你生成变更日志并自动化发布。
安装 Changeset
首先,安装 @changesets/cli
:
pnpm add @changesets/cli -D -w
初始化 Changeset 配置:
pnpm changeset init
这会在根目录下生成一个 .changeset
文件夹,用于存放变更记录。
创建变更记录
当你修改代码并准备发布时,可以使用以下命令创建一个变更记录:
pnpm changeset
命令会提示你输入更改的内容,并自动生成一个记录文件,保存于 .changeset/
目录。
查看变更日志
你可以通过以下命令查看所有变更记录:
pnpm changeset status
发布新版本
生成变更记录后,你可以使用 pnpm
发布新版本:
pnpm changeset version pnpm publish
Changeset 会根据变更记录自动计算版本号,并生成更新的发布日志。
综合示例
假设你有一个包含多个包的 Monorepo:
packages/app
: 一个 React 应用packages/ui
: 一个 UI 组件库libs/utils
: 一个共享的工具库
1. 初始化 Monorepo 和 TurboRepo
pnpm init pnpm add turbo -D pnpm changeset init
2. 配置 turbo.json
{ "pipeline": { "build": { "dependsOn": ["^build"] }, "dev": { "dependsOn": ["build"] } } }
3. 创建包和安装依赖
在 packages/ui
中:
pnpm create react-library ui
在 libs/utils
中:
pnpm init -y
4. 开发并创建变更记录
修改代码后,创建变更记录:
pnpm changeset
5. 发布新版本
pnpm changeset version pnpm publish
总结
- Pnpm Monorepo:管理多个包,提升依赖管理效率。
- TurboRepo:加速构建流程,缓存构建结果。
- Changeset:管理变更记录和自动发布版本。
通过这些工具的配合使用,可以大大提高团队协作的效率,规范项目的开发和发布流程。如果你有具体的项目结构或更多问题,随时可以继续交流!