• Stars
    star
    5,212
  • Rank 7,947 (Top 0.2 %)
  • Language
  • Created over 7 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A curated list of awesome Monorepo tools, software and architectures.

Awesome Monorepo Awesome

A curated list of awesome Monorepo tools, software and architectures. Monorepos, short for mono-repositories, are repositories that contain multiple projects, usually related to each other.

Inspired by vinta/awesome-python.

English | 简体中文

Contents

Build systems & dependency management tools

  • baur builds only changed applications in a monorepo branch and manages build artifacts
  • Bazel is Google's monorepo-oriented build system. More on Bazel: awesome-bazel
  • Bit is a tool for building and managing JavaScript projects with multiple components, and managing the dependency graph of components.
  • Bolt Pkg is a super-powered JavaScript project management.
  • Buck is Facebook's monorepo-oriented build system.
  • drkns is a simple and language agnostic monorepo build tool.
  • Garment is Farfetch's monorepo build system with centralized and customizable task management.
  • GitLab CI 11.4 supports running steps based on path changes.
  • Lerna is a tool for managing JavaScript projects with multiple packages, built on Yarn.
  • MBT is a build tool with differential build support.
  • Nix is a package and distribution build tool with remote caching, predominately used by NixOS.
  • Nx is a build system for TypeScript monorepos and a set of monorepo management tools.
  • OAO is a Yarn-based, opinionated JavaScript monorepo management tool.
  • Pants is a monorepo-oriented build system, used by Twitter, Foursquare and multiple other companies.
  • Please a cross-language build system with an emphasis on high performance, extensibility and reproduceability.
  • pnpm is a JavaScript dependency management tool that supports monorepos through a set of dedicated commands called pnpm multi.
  • Rush Stack is a family of tools geared towards large scale TypeScript monorepos, and based around the Rush build orchestrator
  • Spago is a PureScript package manager and build tool powered by Dhall and package-sets.
  • Symplify/MonorepoBuilder is a PHP monorepo management tool.
  • Tainted is a tool to determine which Go packages need to be rebuilt in a monorepo.
  • Versio updates all version numbers in monorepo projects based on conventional commits, and can generate changelogs and tags.
  • Yarn is a JavaScript dependency management tool that supports monorepos through workspaces.
  • Layer-pack is a Webpack plugin allowing monorepo structures via inheritable npm packages/code layers & es6 glob imports.
  • Turborepo is a high-performance build system for JavaScript and TypeScript codebases.

Repository management tools

  • Builder is a tool that makes it possible to ship the same scripts across projects in a Node.js monorepo. For example, share build and testing scripts across projects.
  • FBShipIt is a library written in Hack for copying commits from one repository to another.
  • adeira/shipit is a simplified JavaScript port of FBShipIt.
  • Lank is a tool that links packages together in a Node.js monorepo using automatic configuration of NODE_PATH instead of symlinks. Lank also allows you to run the same commands across all (or subsets of all) packages.
  • monorepo-run is a collection of helpers to run scripts in each package of a yarn monorepo with a separated pane per package.
  • oao
  • Syncpack ensures consistent dependency versions in large JavaScript Monorepos.
  • Ultra Runner is a smart script runner and build tool for Lerna, Pnpm, Rush and Yarn. Scripts run concurrently, using the dependency topology. Builds keep track of file changes and are skipped when possible.
  • wsrun allows running a command in each package of a Yarn workspaces monorepo.
  • meta is a tool for managing multi-project systems and libraries. It answers the conundrum of choosing between a mono repo or many repos by saying "both", with a meta repo.

Good reads

Version control systems & add-ons

Git

Tools

Scaling info

Mercurial

Tools

  • Watchman, replaced by fsmonitor trigger partial, incremental builds when your files change

Scaling info

Development process tools

Code reviews

  • Pull Review Hubot plugin to automate pull reviews with lots of configuration options.
  • Rietveld is a code review tool by Google used by Chromium.
  • API Extractor is used to detect and review API signatures for TypeScript libraries, and also for publishing a multi-package API reference.

CI tools

Code ownership

Notable public monorepos

Migration tools

Development Workflows

  • Trunk Based Development, a source-control branching model, where developers collaborate on code in a single branch called ‘trunk’, resist any pressure to create other long-lived development branches by employing documented techniques. They therefore avoid merge hell, do not break the build, and live happily ever after.
  • Branch By Abstraction, is a set-piece technique to effect a ‘longer to complete’ change in the trunk.

License

CC0

To the extent possible under law, Uriel Corfa has waived all copyright and related or neighboring rights to this work.

More Repositories

1

django-prometheus

Export Django monitoring metrics for Prometheus.io
Python
1,452
star
2

WhatTheRack

WhatTheRack randomizes your VCV Rack so you make new discoveries
C++
37
star
3

bazel-travis

Use Bazel with Travis-CI
Python
37
star
4

grpc-bazel

A demo of how to use gRPC with Bazel
C++
36
star
5

fake_clock

A C++11-compliant fake clock useful for C++ unit tests that depend on time.
C++
21
star
6

prometheus-rules

Collection of Prometheus rules I use.
21
star
7

Milkrack

Old Skool Winamp Milkrack visuals in your VCV Rack
C++
20
star
8

agenix-systemd

Integrate agenix and systemd-creds together
Nix
19
star
9

golang-latex-listings

Golang definition for LaTeX's listings mode. Code coloration for Go in your LaTeX files!
TeX
19
star
10

PIDController

Simple PID controller
Python
18
star
11

client_cpp

A (tentative) C++ client for Prometheus.io
C++
10
star
12

showtmux

Interactive terminal-based live demos that don't go wrong
Python
8
star
13

odon

On-Demand ONions: utility to create Tor hidden services on-demand
Python
7
star
14

Bargkass

Bargkass modules for VCV Rack
C++
3
star
15

OPL33t

OPL modules for VCV Rack
C++
3
star
16

python-gc-prometheus

Export metrics about your Python application's GC stats to Prometheus.io
Python
2
star
17

pip-prometheus

Export the version of Pip packages to Prometheus
Python
2
star
18

python-logging-prometheus

Export metrics about your logging to Prometheus.io
Python
2
star
19

goref

[Go] Where is this function used? Who imports this package? Now you can find out, at scale!
Go
2
star
20

my_kernel

C
1
star
21

dotfiles

My dotfiles
Emacs Lisp
1
star
22

tasty-pies

Sonic pies.
1
star
23

CodingTricks

C++
1
star
24

intro_to_asymmetric_crypto

Talks I gave about asymmetric cryptography
Python
1
star