Reference · print-friendly
Four gates for monorepo + tool choice. Run in order. Earlier gates reject more options than later ones.
| Choose | When |
|---|---|
| Turborepo |
JS/TS only; orchestrate existing
package.json scripts; thin caching layer; Vercel
remote cache OK
|
| moon | Want built-in toolchain pins, task inheritance, polyglot commands, ownership/constraints; config-first; not only npm scripts |
| Nx | Full platform: plugins, generators, distributed CI / Nx Cloud depth, large JS ecosystem investment |
| Bazel | Hermetic builds + transparent remote execution at extreme scale; accept steep model (BUILD files, sandbox) |
moon’s own comparison is a starting point (may be incomplete/outdated): moonrepo.dev/docs/comparison. Landscape: monorepo.tools/compare.
projects (folders alone invisible).moon/tasks + inheritancemoon run … --affected — never full CI forever“We use mono | poly because job; tool is moon | turbo | nx | bazel because need; loop is init → map → inherit → pin → run affected; we own risk.”