mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-11 13:19:21 +00:00

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>
224 lines
7.5 KiB
JSON
224 lines
7.5 KiB
JSON
{
|
|
"github": {
|
|
"enabled": true
|
|
},
|
|
"cleanUrls": true,
|
|
"rewrites": [
|
|
{
|
|
"source": "/docs/proxy/js/script.js",
|
|
"destination": "https://plausible.io/js/script.tagged-events.pageview-props.outbound-links.js"
|
|
},
|
|
{
|
|
"source": "/docs/proxy/api/event",
|
|
"destination": "https://plausible.io/api/event"
|
|
},
|
|
{
|
|
"source": "/docs/:match*",
|
|
"destination": "/:match*"
|
|
}
|
|
],
|
|
"redirects": [
|
|
{ "source": "/", "destination": "/docs" },
|
|
{
|
|
"source": "/docs/category/apis/:slug*",
|
|
"destination": "/docs/apis/:slug*",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/apis/mgmt/:slug*",
|
|
"destination": "/docs/apis/resources/mgmt/:slug*",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/apis/auth/:slug*",
|
|
"destination": "/docs/apis/resources/auth/:slug*",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/apis/system/:slug*",
|
|
"destination": "/docs/apis/resources/system/:slug*",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/apis/admin/:slug*",
|
|
"destination": "/docs/apis/resources/admin/:slug*",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/apis/actionsv2/introduction",
|
|
"destination": "/docs/apis/actions/v2/usage",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/apis/actionsv2/execution-local",
|
|
"destination": "/docs/apis/actions/v2/testing-locally",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/guides/integrate/human-users",
|
|
"destination": "/docs/guides/integrate/login",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/guides/solution-scenarios/device-authorization",
|
|
"destination": "/docs/guides/integrate/login/oidc/device-authorization",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/guides/integrate/oauth-recommended-flows",
|
|
"destination": "/docs/guides/integrate/login/oidc/oauth-recommended-flows",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/guides/integrate/login-users",
|
|
"destination": "/docs/guides/integrate/login/oidc/login-users",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/guides/integrate/logout",
|
|
"destination": "/docs/guides/integrate/login/oidc/logout",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/guides/solution-scenarios/onboarding",
|
|
"destination": "/docs/guides/integrate/onboarding",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/guides/solution-scenarios/onboarding/b2b",
|
|
"destination": "/docs/guides/integrate/onboarding/b2b",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/guides/solution-scenarios/onboarding/end-users",
|
|
"destination": "/docs/guides/integrate/onboarding/end-users",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/concepts/structure/jwt_idp",
|
|
"destination": "/docs/guides/integrate/identity-providers/jwt-idp",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/guides/solution-scenarios/onboarding/end-users",
|
|
"destination": "/docs/guides/integrate/onboarding/end-users",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/guides/integrate/serviceusers",
|
|
"destination": "/docs/guides/integrate/service-users/authenticate-service-users",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/guides/integrate/private-key-jwt",
|
|
"destination": "/docs/guides/integrate/service-users/private-key-jwt",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/guides/integrate/client-credentials",
|
|
"destination": "/docs/guides/integrate/service-users/client-credentials",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/guides/integrate/pat",
|
|
"destination": "/docs/guides/integrate/service-users/private-access-token",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/guides/integrate/access-zitadel-apis",
|
|
"destination": "/docs/guides/integrate/zitadel-apis/access-zitadel-apis",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/guides/integrate/access-zitadel-system-api",
|
|
"destination": "/docs/guides/integrate/zitadel-apis/access-zitadel-system-api",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/guides/integrate/event-api",
|
|
"destination": "/docs/guides/integrate/zitadel-apis/event-api",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/examples/call-zitadel-api/go",
|
|
"destination": "/docs/guides/integrate/zitadel-apis/example-zitadel-api-with-go",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/examples/call-zitadel-api/dot-net",
|
|
"destination": "/docs/guides/integrate/zitadel-apis/example-zitadel-api-with-dot-net",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/guides/manage/terraform/basics",
|
|
"destination": "/docs/guides/manage/terraform-provider",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/guides/integrate/identity-providers",
|
|
"destination": "/docs/guides/integrate/identity-providers/introduction",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/guides/integrate/login/login-users#centralized-authentication-endpoint",
|
|
"destination": "/docs/guides/integrate/login/hosted-login#centralized-authentication-endpoint",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/guides/integrate/login/login-users#security-and-compliance",
|
|
"destination": "/docs/guides/integrate/login/hosted-login#security-and-compliance",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/guides/integrate/login/login-users#developer-friendly-integration",
|
|
"destination": "/docs/guides/integrate/login/hosted-login#developer-friendly-integration",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/guides/integrate/login/login-users#key-features-of-the-hosted-login",
|
|
"destination": "/docs/guides/integrate/login/hosted-login#key-features-of-the-hosted-login",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/guides/integrate/login/login-users#flexible-usernames",
|
|
"destination": "/docs/guides/integrate/login/hosted-login#flexible-usernames",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/guides/integrate/login/login-users#support-for-multiple-authentication-methods",
|
|
"destination": "/docs/guides/integrate/login/hosted-login#support-for-multiple-authentication-methods",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/guides/integrate/login/login-users#enterprise-single-sign-on",
|
|
"destination": "/docs/guides/integrate/login/hosted-login#enterprise-single-sign-on",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/guides/integrate/login/login-users#multi-tenancy-authentication",
|
|
"destination": "/docs/guides/integrate/login/hosted-login#multi-tenancy-authentication",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/guides/integrate/login/login-users#customization-options",
|
|
"destination": "/docs/guides/integrate/login/hosted-login#customization-options",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/guides/integrate/login/login-users#fast-account-switching",
|
|
"destination": "/docs/guides/integrate/login/hosted-login#fast-account-switching",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/guides/integrate/login/login-users#self-service-for-users",
|
|
"destination": "/docs/guides/integrate/login/hosted-login#self-service-for-users",
|
|
"permanent": true
|
|
},
|
|
{
|
|
"source": "/docs/guides/integrate/login/login-users#password-reset",
|
|
"destination": "/docs/guides/integrate/login/hosted-login#password-reset",
|
|
"permanent": true
|
|
}
|
|
]
|
|
}
|