从 Nx 迁移到 Turbo
如果你有一个包含使用旧版基于 Nx 的构建系统构建的自定义 Piece 的现有 Fork,你需要将其迁移到新的基于 Turbo 的构建系统。本指南说明了变更内容并提供了迁移脚本。
变更内容
Activepieces monorepo 用 Turbo 替换了 Nx 作为其构建协调器。对于 Piece 来说,这意味着:
| 旧版(Nx) | 新版(Turbo) | |
|---|---|---|
| 构建配置 | 每个 Piece 的 project.json | package.json 脚本 |
| 构建命令 | nx build pieces-{name} | turbo run build --filter=@activepieces/piece-{name} |
| 输出目录 | dist/out-tsc(共享) | ./dist(每个 Piece 本地) |
| 任务运行器 | Nx executor(@nx/js:tsc) | 直接 tsc -p tsconfig.lib.json && cp package.json dist/ |
| 依赖管理 | 由 Nx 图推断 | 工作区协议(workspace:*)在 package.json 中 |
每个 Piece 受影响的文件
project.json— 删除(不再需要)package.json— 添加build和lint脚本,添加main和types字段,添加工作区依赖tsconfig.lib.json— 更新outDir,添加rootDir、baseUrl、paths
自动迁移
运行迁移脚本以一次性更新所有自定义 Piece:
npx ts-node tools/scripts/migrate-custom-piece-to-turbo.ts
此脚本扫描 packages/pieces/custom/ 并应用所有必要的更改。
迁移特定的 Piece
你也可以传递路径来迁移单个 Piece:
npx ts-node tools/scripts/migrate-custom-piece-to-turbo.ts packages/pieces/custom/my-piece
脚本功能
对于每个 Piece,脚本会:
- 更新
package.json— 添加build和lint脚本,设置main和types入口点,确保@activepieces/pieces-framework、@activepieces/shared和tslib列为依赖 - 更新
tsconfig.lib.json— 设置outDir为./dist,添加rootDir、baseUrl、paths和declaration设置 - 如果缺失则创建
tsconfig.json— 继承根tsconfig.base.json - 删除
project.json— 移除 Nx 配置
验证迁移
迁移后,构建你的 Piece 以验证一切正常:
npx turbo run build --filter=@activepieces/piece-your-piece --force
或者使用 CLI:
npm run build-piece your-piece
构建输出应出现在 packages/pieces/custom/your-piece/dist/ 中。