explaingit

korfuri/awesome-monorepo

5,806Audience · ops devopsComplexity · 1/5Setup · easy

TLDR

A curated list of tools, articles, and resources for teams adopting the monorepo approach, covering build systems, dependency management, CI, and migration utilities.

Mindmap

mindmap
  root((awesome-monorepo))
    Build Systems
      Bazel and Buck
      Nx and Turborepo
      Pants and Lerna
    Version Control
      Git sparse checkout
      Shallow clones
      Mercurial tooling
    Resources
      Google and Atlassian articles
      Research papers
      Public monorepo examples
    Use Cases
      Build tool selection
      CI affected detection
      Repo migration
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Choose the right build system for your monorepo by comparing Bazel, Nx, Turborepo, Pants, and others in one place.

USE CASE 2

Read research from Google and Atlassian on the trade-offs of monorepo vs multi-repo before committing to a structure.

USE CASE 3

Find a migration tool to combine several separate Git repositories into one monorepo without losing history.

USE CASE 4

Set up CI that only runs tests for the projects actually affected by a given code change.

Tech stack

BazelNxTurborepoLernaGit

Getting it running

Difficulty · easy Time to first run · 5min

This is a reference list, not software, no installation required, just read and pick the tools that fit your stack.

In plain English

A monorepo is a single code repository that holds multiple related projects together, rather than keeping each project in its own separate repository. Companies like Google, Facebook, and Twitter have used this approach at large scale. This repository is a curated list of tools, articles, and resources for teams who want to work this way. The list is organized into several categories. Build systems and dependency management covers tools like Bazel (from Google), Buck (from Facebook), Nx, Turborepo, Lerna, Pants, and many others. These tools handle the problem of only rebuilding the parts of a codebase that actually changed, instead of rebuilding everything from scratch every time. Repository management tools cover utilities for syncing packages, running scripts across multiple projects at once, and keeping dependency versions consistent. There is a section of recommended reading: articles and research papers from Google, Atlassian, and others that explain the trade-offs of the monorepo approach versus splitting projects into many separate repositories. Another section covers version control systems and add-ons, with a focus on Git techniques like shallow clones and sparse checkouts that help manage large repositories more efficiently. There are also entries for Mercurial-based tooling. The list includes development process tools such as continuous integration systems that can detect which projects were affected by a change and only run the relevant tests. It also links to notable public monorepos you can study as examples, and to migration tools that help you combine separate repositories into one. The list is available in both English and Simplified Chinese, and accepts contributions through pull requests on GitHub.

Copy-paste prompts

Prompt 1
Based on the awesome-monorepo list, which build tool should I pick for a JavaScript/TypeScript monorepo with 20 packages, Nx, Turborepo, or Lerna?
Prompt 2
What Git techniques like sparse checkout or shallow clones help keep a large monorepo fast to clone and navigate?
Prompt 3
How does Google's Bazel handle incremental builds in a monorepo so it only recompiles what changed?
Prompt 4
Point me to the best article explaining the trade-offs between monorepo and polyrepo for a 10-person engineering team.
Open on GitHub → Explain another repo

← korfuri on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.