Skip to content

JS Monorepos

Why monorepos?

  1. consistency 2. share config files 3. ESLint 4. utils 5. docs
  2. Dependency management 7. share node_modules 8. CI/CD is easier to test/build together

Problem with monorepos?

They're huge

Big tech companies have their own solutions

Options

  • npm/yarn/pnpm workspaces
  • Lerna: open source multi-package repos
  • NX
  • Turborepo

Smart build systems

built on top of workspaces

NX vs Turborepo

  • Create a dependency tree between all the apps
  • smart caching
  • run jobs in parallel
  • remote caching
    • cache can be downloaded remotely

How does a client/app know that a local package updated?

  • is the * thing a workspace specific thing?

  • is it the workspace that links it?

Turborepo

outputs: []

  • caching

Last update: 2022-11-04