Monorepo
Several packages developed in one repository with shared tooling and atomic cross-package changes.
A monorepo holds multiple packages in one repository. The alternative — one repository per package — is often called polyrepo.
The decisive advantage is the atomic cross-cutting change: modifying a shared library and every consumer in a single commit, reviewed together and validated together. In separate repositories the same change is a publish, a version bump, and a coordination problem, during which the two sides are inconsistent.
The costs scale with size. Tooling must understand the package graph to avoid rebuilding and retesting everything on every change. Checkouts get large. Ownership needs to be expressed explicitly, since directory structure no longer implies it.
Package managers support the pattern through workspaces: a root manifest listing member packages, dependencies between them resolved locally rather than fetched. Two details follow. Dependency-update tooling generally scans the root and traverses the workspace list, so configuring it to scan each package directory as well produces duplicate proposals that all rewrite the same lockfile and conflict with each other. And the on-disk layout of installed packages depends on the linker strategy, so reading a version from a directory may find nothing; the Lockfile is the answer.
See also11
Module Graph
The directed graph of imports that decides what code ends up where.
Web Platform22 connections
Package Manager
The tool that resolves, fetches, and installs dependencies, and pins them for reproducibility.
Systems & Tooling27 connections
Version Control
A system recording the history of a project's files, enabling branching, merging, and recovery.
Version Control & Delivery26 connections
Supply Chain Security
Protecting against compromise arriving through the code and tooling a project depends on.
Version Control & Delivery24 connections
Semantic Versioning
A version-numbering convention where the number communicates the kind of change.
Version Control & Delivery22 connections
Bundler
The tool that resolves an application's modules into the files a browser downloads.
Web Platform18 connections
Silent Failure
A failure that produces no signal, so the absence of an error reads as success.
Method73 connections
Git LFS
A Git extension that stores large binary files on a separate server and keeps small pointer files in the repository, so history stays light enough to clone.
Version Control & Delivery10 connections
Test Impact Analysis
Running only the tests a change could plausibly affect, using dependency graphs, coverage maps, or learned models, so large suites stay fast without giving up their safety net.
Testing & Verification10 connections
Build Cache
Reusing the outputs of build and test steps whose inputs haven't changed, keyed by a hash of those inputs, so large codebases build in minutes instead of hours.
Version Control & Delivery11 connections
Shallow Clone
Ways to fetch less than a whole Git repository, by cutting history, deferring file contents, or checking out only some directories, and what each breaks.
Version Control & Delivery8 connections
Linked from13
- Build CacheVersion Control & Delivery
Reusing the outputs of build and test steps whose inputs haven't changed, keyed by a hash of those inputs, so large codebases build in minutes instead of hours.
- ChangelogVersion Control & Delivery
A curated, human-readable record of the notable changes in each version of a project, written for the people who use it rather than the people who built it.
- Conway's LawVersion Control & Delivery
Systems tend to reproduce the communication structure of the organization that built them.
- CopyleftVersion Control & Delivery
A licensing strategy that uses copyright to require derivative works to stay open.
- Git LFSVersion Control & Delivery
A Git extension that stores large binary files on a separate server and keeps small pointer files in the repository, so history stays light enough to clone.
- LockfileVersion Control & Delivery
A generated file recording the exact dependency versions an install resolved to.
- Package ManagerSystems & Tooling
The tool that resolves, fetches, and installs dependencies, and pins them for reproducibility.
- Semantic VersioningVersion Control & Delivery
A version-numbering convention where the number communicates the kind of change.
- Shallow CloneVersion Control & Delivery
Ways to fetch less than a whole Git repository, by cutting history, deferring file contents, or checking out only some directories, and what each breaks.
- Supply Chain SecurityVersion Control & Delivery
Protecting against compromise arriving through the code and tooling a project depends on.
- Test Impact AnalysisTesting & Verification
Running only the tests a change could plausibly affect, using dependency graphs, coverage maps, or learned models, so large suites stay fast without giving up their safety net.
- Version ControlVersion Control & Delivery
A system recording the history of a project's files, enabling branching, merging, and recovery.
- Yak ShavingMethod
A chain of prerequisite tasks that stands between you and the task you meant to do.