Files
zitadel/package.json
Max Peintner 312b7b6010 chore: 🚀 Migrate monorepo from Yarn to pnpm + Turbo integration + Configuration cleanup (#10165)
This PR modernizes the ZITADEL monorepo build system by migrating from
Yarn to pnpm, introducing Turbo for improved build orchestration, and
cleaning up configuration inconsistencies across all apps and packages.

### 🎯 Key Improvements

#### 📦 **Package Manager Migration (Yarn → pnpm)**
- **Performance**: Faster installs with pnpm's efficient symlink-based
node_modules structure
- **Disk space**: Significant reduction in disk usage through
content-addressable storage
- **Lockfile**: More reliable dependency resolution with pnpm-lock.yaml
- **Workspace support**: Better monorepo dependency management

####  **Turbo Integration**
- **Build orchestration**: Dependency-aware task execution across the
monorepo
- **Intelligent caching**: Dramatically faster builds on CI/CD and local
development
- **Parallel execution**: Optimal task scheduling based on dependency
graphs
- **Vercel optimization**: Enhanced build performance and caching on
Vercel deployments

#### 🧹 **Configuration Cleanup & Unification**
- **Removed config packages**: Eliminated `@zitadel/*-config` packages
and inlined configurations
- **Simplified dependencies**: Reduced complexity in package.json files
across all apps
- **Consistent tooling**: Unified prettier, ESLint, and TypeScript
configurations
- **Standalone support**: Improved prepare-standalone.js script for
subtree deployments

### 📋 Detailed Changes

#### **🔧 Build System & Dependencies**
-  Updated all package.json scripts to use `pnpm` instead of `yarn`
-  Replaced `yarn.lock` with pnpm-lock.yaml and regenerated
dependencies
-  Added Turbo configuration (turbo.json) to root and individual
packages
-  Configured proper dependency chains: `@zitadel/proto#generate` →
`@zitadel/client#build` → `console#build`
-  Added missing `@bufbuild/protobuf` dependency to console app for
TypeScript compilation

#### **🚀 CI/CD & Workflows**
-  Updated all GitHub Actions workflows to use `pnpm/action-setup@v4`
-  Migrated build processes to use Turbo with directory-based filters
(`--filter=./console`)
-  **New**: Added `docs.yml` workflow for building documentation
locally (helpful for contributors without Vercel access)
-  Fixed dependency resolution issues in lint workflows
-  Ensured proto generation always runs before builds and linting

#### **📚 Documentation & Proto Generation**
-  **Robust plugin management**: Enhanced plugin-download.sh with retry
logic and error handling
-  **Vercel compatibility**: Fixed protoc-gen-connect-openapi plugin
availability in Vercel builds
-  **API docs generation**: Resolved Docusaurus build errors with
OpenAPI plugin configuration
-  **Type safety**: Improved TypeScript type extraction patterns in
Angular components

#### **🛠️ Developer Experience**
-  Updated all README files to reference pnpm commands
-  Improved Makefile targets to use Turbo for consistent builds
-  Enhanced standalone build process for login app subtree deployments
-  Added debug utilities for troubleshooting build issues

#### **🗂️ File Structure & Cleanup**
-  Removed obsolete configuration packages and their references
-  Cleaned up Docker files to remove non-existent package copies
-  Updated workspace references and import paths
-  Streamlined turbo.json configurations across all packages

### 🎉 Benefits

1. ** Faster Builds**: Turbo's caching and parallel execution
significantly reduce build times
2. **🔄 Better Caching**: Improved cache hits on Vercel and CI/CD
environments
3. **🛠️ Simplified Maintenance**: Unified tooling and configuration
management
4. **📈 Developer Productivity**: Faster local development with optimized
dependency resolution
5. **🚀 Enhanced CI/CD**: More reliable and faster automated builds and
deployments
6. **📖 Better Documentation**: Comprehensive build documentation and
troubleshooting guides

### 🧪 Testing

-  All apps build successfully with new pnpm + Turbo setup
-  Proto generation works correctly across console, login, and docs
-  GitHub Actions workflows pass with new configuration
-  Vercel deployments work with enhanced plugin management
-  Local development workflow verified and documented

This migration sets a solid foundation for future development while
maintaining backward compatibility and improving the overall developer
experience.

---------

Co-authored-by: Elio Bischof <elio@zitadel.com>
2025-07-16 09:10:19 +02:00

59 lines
2.5 KiB
JSON

{
"packageManager": "pnpm@9.1.2+sha256.19c17528f9ca20bd442e4ca42f00f1b9808a9cb419383cd04ba32ef19322aba7",
"private": true,
"name": "zitadel-monorepo",
"scripts": {
"generate": "pnpm exec turbo run generate",
"build": "pnpm exec turbo run build",
"build:client:standalone": "pnpm exec turbo run build:client:standalone",
"build:login:standalone": "pnpm exec turbo run build:login:standalone",
"build:packages": "pnpm exec turbo run build --filter=./login/packages/*",
"build:apps": "pnpm exec turbo run build --filter=./login/apps/*",
"build:console": "pnpm exec turbo run build --filter=console",
"test": "pnpm exec turbo run test",
"start": "pnpm exec turbo run start",
"start:built": "pnpm exec turbo run start:built",
"test:unit": "pnpm exec turbo run test:unit -- --passWithNoTests",
"test:unit:standalone": "pnpm exec turbo run test:unit:standalone -- --passWithNoTests",
"test:integration": "cd login/apps/login-test-integration && pnpm test:integration",
"test:integration:setup": "NODE_ENV=test pnpm exec turbo run test:integration:setup",
"test:acceptance": "cd login/apps/login-test-acceptance && pnpm test:acceptance",
"test:acceptance:setup": "cd login/apps/login-test-acceptance && pnpm test:acceptance:setup",
"dev": "pnpm exec turbo run dev --no-cache --continue",
"dev:local": "pnpm test:acceptance:setup",
"dev:console": "pnpm exec turbo run start --filter=console",
"lint": "pnpm exec turbo run lint",
"lint:fix": "pnpm exec turbo run lint:fix",
"clean": "pnpm exec turbo run clean && rm -rf node_modules",
"format:fix": "pnpm exec prettier --write \"**/*.{ts,tsx,md}\"",
"format": "pnpm exec prettier --check \"**/*.{ts,tsx,md}\"",
"changeset": "pnpm exec changeset",
"version-packages": "pnpm exec changeset version",
"release": "pnpm exec turbo run build --filter=login^... && pnpm exec changeset publish"
},
"pnpm": {
"overrides": {
"@typescript-eslint/parser": "^8.35.1",
"@zitadel/client": "workspace:*",
"@zitadel/proto": "workspace:*"
}
},
"devDependencies": {
"@changesets/cli": "^2.29.2",
"@eslint/compat": "^1.3.1",
"@eslint/eslintrc": "^3.3.1",
"@vitejs/plugin-react": "^4.4.1",
"axios": "^1.8.4",
"dotenv": "^16.5.0",
"dotenv-cli": "^8.0.0",
"eslint": "9.30.1",
"prettier": "^3.5.3",
"prettier-plugin-organize-imports": "^4.1.0",
"tsup": "^8.4.0",
"turbo": "2.5.0",
"typescript": "^5.8.3",
"vite-tsconfig-paths": "^5.1.4",
"vitest": "^3.1.2"
}
}