symplify/monorepo-builder
Tools for PHP monorepos: scaffold a repo, merge package composer.json files into the root, validate shared dependency versions, bump inter-package constraints, propagate versions back to packages, and automate releases via a single monorepo-builder.php config.
packages/) or multi-tenant SaaS architectures would benefit from this tool’s version alignment and dependency management.monorepo-builder.php allows fine-grained control over merge strategies (e.g., excluding dev dependencies, custom paths).merge, release) are scriptable and can be embedded in Laravel’s CI pipelines (GitHub Actions, GitLab CI) for automated dependency sync.composer.json files may introduce conflicts if packages have divergent version constraints (e.g., ^5.0 vs. ~6.0). Mitigation: Use monorepo-builder's validation rules or pre-merge checks.Vendor\Package\*).vendor/ symlinks, Laravel-specific composer.json keys like extra.laravel). Requires manual testing.symplify/monorepo-builder:^11.2 for PHP 8.1.vendor/ symlinks or platform-specific packages (e.g., laravel/framework)?monorepo-builder release integrate with Laravel’s composer.json hooks (e.g., post-update-cmd) for seamless deployments?composer.json files against Laravel’s environment-specific requirements (e.g., APP_ENV)?composer install time when merging hundreds of packages?composer.json if conflicts arise post-release?packages/auth, packages/api).guzzlehttp/guzzle).^9.0 for all packages).composer.json files for version conflicts.packages/ (e.g., Laravel plugins).composer require symplify/monorepo-builder --dev
vendor/bin/monorepo-builder init
monorepo-builder.php to exclude Laravel-specific keys (e.g., extra.laravel).merge --dry-run to validate changes.monorepo-builder merge to pre-commit hooks or CI pipelines.- name: Merge monorepo dependencies
run: vendor/bin/monorepo-builder merge
composer update with monorepo-builder release.post-autoload-dump).bootstrap/cache or storage/ paths.composer.json is merged correctly).init).packages/ and test merge.merge in CI/CD.release for coordinated package updates.composer.json files.composer.json reduces duplication.release command ensures version consistency across packages.monorepo-builder.php requires updates if package structures change.APP_KEY in merged configs).--verbose flags for commands to diagnose merge issues.O(n)) where n = number of packages. Test with 50+ packages to validate.composer validate on merged files.merge.| Failure Scenario | Impact | Mitigation |
|---|---|---|
Corrupted merged composer.json |
Broken dependencies | Use merge --dry-run and validate with composer validate. |
| Version conflict in merge | Build failures | Configure monorepo-builder.php to enforce strict versions. |
| CI pipeline timeout | Blocked releases | Cache Composer dependencies or split merge into smaller batches. |
| Laravel-specific config loss | Missing APP_ENV or .env keys |
Exclude Laravel-specific keys from merge or use post-merge scripts. |
| Package namespace collisions | Autoloader errors | Scope namespaces (e.g., Vendor\Package\*). |
merge/release workflows.monorepo-builder.php configuration.composer.json keys.merge.composer.json files.How can I help you explore Laravel packages today?