Reference
Deterministic language/tool versions via
.moon/toolchains.* + proto. Optional, high leverage.
.moon/toolchains.* (optional
file)
moon.* toolchains block
~/.proto (moon
downloads/reuses tools there)
# Enable blocks (empty = enable without auto-install)
javascript:
packageManager: 'yarn'
node: {}
yarn: {}
# Pin versions → auto download/install on first related task
node:
version: '20.0.0'
yarn:
version: '4.0.0'
version enables
managed install
moon toolchain add <toolchain> (not all
languages)
20.0.0 — preferred, least drift
20.0 / ^20 — may
reuse local match or fetch latest matching
latest / stable —
discouraged (can change daily)
# .moon/toolchains.yml
node:
versionFromPrototools: 'nodejs' # default true uses same id
# .prototools
nodejs = "~24"
Good pair with Renovate-style auto-updates of one file.
MOON_TOOLCHAIN_FORCE_GLOBALS=true
MOON_TOOLCHAIN_FORCE_GLOBALS=node,yarn
Use preinstalled PATH binaries instead of proto-managed installs.
installDependencies (default true) —
install when lock/manifest changes