> ## Documentation Index
> Fetch the complete documentation index at: https://www.activepieces.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Migrate from Nx to Turbo

> [!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.

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](https://nx.dev) with [Turbo](https://turbo.build) as its build orchestrator. For pieces, this means:

| | **Old (Nx)** | **New (Turbo)** |
| - | - | - |
| Build config | `project.json` per piece | `package.json` scripts |
| Build command | `nx build pieces-{name}` | `turbo run build --filter=@activepieces/piece-{name}` |
| Output directory | `dist/out-tsc` (shared) | `./dist` (local per piece) |
| Task runner | Nx executor (`@nx/js:tsc`) | Direct `tsc -p tsconfig.lib.json && cp package.json dist/` |
| Dependencies | Inferred by Nx graph | Workspace 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 theme={null}
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 theme={null}
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 theme={null}
npx turbo run build --filter=@activepieces/piece-your-piece --force
```

Or use the CLI:

```bash theme={null}
npm run build-piece your-piece
```

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


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.