Skyframe Documentation
Monorepos
Monorepos
Introduction
A monolithic repository is an approach to GIT Repositories in which all related packages of our applications are stored in the same place. This method attempts to have a single source of truth when it comes to sharing code between different actors in the final application.
Splitting up large codebases into separate packages is extremely useful when our project is being developed by a big company with multiple teams or when you are trying to share code across applications. However, making changes across many repositories is messy and difficult to track, and testing across repositories gets complicated really fast.
To solve these (and many other) problems, some organizations will arrange their codebases into a single repository (sometimes called monorepos). Projects like Babel, React, Angular and many others develop all of their packages within a single repository.
For more information, you can read this great thread in Babel repository.
Lerna
Lerna is a tool for managing multi-pacakge repositories (monorepos) used by Babel and many other open source packages.
Skyframe uses this tool under the hood, but you can still define your own workflows and optimizations. For more information, go to the Lerna repository.
Monolithic scaffolding
By default, Skyframe creates projects with a micro-services oriented design. You will have a directory containing all the different packages. This is an example of a default scaffolding, but remember that you can change it however you like at any time!
my-skyframe-repo/ package.json apps/ backend/ package.json frontend/ package.json mobile/ package.jsonThe apps folder will be the place to create all the applications (or micro-services) interacting in your product. You can create multiple workspaces like the apps folder in order to better organize your repository.