Reference

Toolchain pins

Deterministic language/tool versions via .moon/toolchains.* + proto. Optional, high leverage.

Why

Config home

Enable vs pin

# 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 shapes

Share one pin with .prototools

# .moon/toolchains.yml
node:
  versionFromPrototools: 'nodejs'  # default true uses same id

# .prototools
nodejs = "~24"

Good pair with Renovate-style auto-updates of one file.

Escape hatch (CI/Docker)

MOON_TOOLCHAIN_FORCE_GLOBALS=true
MOON_TOOLCHAIN_FORCE_GLOBALS=node,yarn

Use preinstalled PATH binaries instead of proto-managed installs.

Related pipeline knobs