Back to Activepieces

Migrate from Nx to Turbo

docs/build-pieces/misc/migrate-nx-to-turbo.mdx

0.89.02.6 KB
Original Source
<Note> The Activepieces monorepo has fully migrated to Turbo. This guide is kept for **historical reference** and for users with older forks that still use the Nx-based build system. </Note>

If you have an existing fork with custom pieces built using the old Nx-based build system, you need to migrate them to the new Turbo-based build system. This guide explains what changed and provides a migration script.

What Changed

The Activepieces monorepo replaced Nx with Turbo as its build orchestrator. For pieces, this means:

Old (Nx)New (Turbo)
Build configproject.json per piecepackage.json scripts
Build commandnx build pieces-{name}turbo run build --filter=@activepieces/piece-{name}
Output directorydist/out-tsc (shared)./dist (local per piece)
Task runnerNx executor (@nx/js:tsc)Direct tsc -p tsconfig.lib.json && cp package.json dist/
DependenciesInferred by Nx graphWorkspace protocol (workspace:*) in package.json

Files affected per piece

  • project.json: Deleted (no longer needed)
  • package.json: Added build and lint scripts, added main and types fields, added workspace dependencies
  • tsconfig.lib.json: Updated outDir, added rootDir, baseUrl, paths

Automatic Migration

Run the migration script to update all custom pieces at once:

bash
npx ts-node tools/scripts/migrate-custom-piece-to-turbo.ts

This scans packages/pieces/custom/ and applies all necessary changes.

Migrate a specific piece

You can also pass a path to migrate a single piece:

bash
npx ts-node tools/scripts/migrate-custom-piece-to-turbo.ts packages/pieces/custom/my-piece

What the script does

For each piece, the script:

  1. Updates package.json: adds build and lint scripts, sets main and types entry points, ensures @activepieces/pieces-framework, @activepieces/shared, and tslib are listed as dependencies
  2. Updates tsconfig.lib.json: sets outDir to ./dist, adds rootDir, baseUrl, paths, and declaration settings
  3. Creates tsconfig.json if missing, extending the root tsconfig.base.json
  4. Deletes project.json, removing the Nx configuration

Verify the Migration

After migrating, build your piece to verify everything works:

bash
npx turbo run build --filter=@activepieces/piece-your-piece --force

Or use the CLI:

bash
npm run build-piece your-piece

The build output should appear in packages/pieces/custom/your-piece/dist/.