Do you want to know what is monorepo and why/when you should use it? Do you look for brief source that will answer your questions in simple and understandable manner? <br> This is it.
A repository that contains multiple packages or projects. Those projects can, but don't have to be related. Most famous monorepo pioneers are Google, Facebook and Twitter.
The most famous monorepos in PHP are Symfony, Laravel, Symplify, Sylius, Yii2 or Shopsys.
Monorepo is split into many single-repos, e.g. Symfony/Symfony is split into Symfony/Console, Symfony/Validator etc. Each single-repo repository is read-only. You can change its code via pull-request to the monorepo.
The other approach to manage multiple repositories. 1 package = 1 own repository. Each package has it's own development, tagging and even maintainers. E.g. Doctrine 2 or Nette 2.
Monolith ≠ monorepo. Monolith is huge amount of coupled code of 1 application that is hell to maintain.
Simplified organization
Easy to coordinate changes across modules.
Simplified dependencies
Single lint, build, test and release process
Tooling
Single place to report issues
Cross-project changes
Tests across modules are run together → finds bugs that touch multiple modules easier
These are cherry-picked reasons from legendary Advantages of Monolithic Version Control. Read it to get deeper insight.
Symplify/MonorepoBuilder - simpler, written in PHP
shopsys/monorepo-tools - advanced, shell scripts
Do you learn from my contents or use open-souce packages like Rector every day?
Consider supporting it on GitHub Sponsors.
I'd really appreciate it!