Awesome Monorepo Save

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

Project README

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.

Open Source Agenda is not affiliated with "Awesome Monorepo" Project. README Source: korfuri/awesome-monorepo
Stars
5,060
Open Issues
24
Last Commit
8 months ago

Open Source Agenda Badge

Open Source Agenda Rating