Documentation is currently for moon v2 and latest proto. Documentation for moon v1 has been frozen and can be found here.
.moon/toolchains
The .moon/toolchains.* file configures the toolchain and the workspace development environment.
This file is optional.
Managing tool version's within the toolchain ensures a deterministic environment across any machine (whether a developer, CI, or production machine).
extends
Defines one or many external .moon/toolchains.*'s to extend and inherit settings from. Perfect for
reusability and sharing configuration across repositories and projects. When defined, this setting
must be an HTTPS URL or relative file system path that points to a valid YAML document!
extends: 'https://raw.githubusercontent.com/organization/repository/master/.moon/toolchains.yml'
Settings will be merged recursively for blocks, with values defined in the local configuration taking precedence over those defined in the extended configuration.
moonv1.29.0
Configures how moon will receive information about latest releases and download locations.
manifestUrl
Defines an HTTPS URL in which to fetch the current version information from.
moon:
manifestUrl: 'https://proxy.corp.net/moon/version'
downloadUrl
Defines an HTTPS URL in which the moon binary can be downloaded from. The download file name is hard-coded and will be appended to the provided URL.
Defaults to downloading from GitHub: https://github.com/moonrepo/moon/releases
moon:
downloadUrl: 'https://github.com/moonrepo/moon/releases/latest/download'
protov1.39.0
Configures how moon integrates with and utilizes proto.
version
The version of proto to install and run toolchains with. If proto or this version of proto has not been installed yet, it will be installed automatically when running a task.
proto:
version: '0.51.0'
Shared
The following settings are available and shared across all toolchains. Run
moon toolchain info <toolchain> for all available settings for a specific toolchain.
inheritAliasesv2.1.0
When enabled, will inherit aliases for projects while the toolchain
is extending the project graph. An alias is typically derived from a name field in a toolchain
manifest file (package.json, Cargo.toml, etc). Defaults to true.
javascript:
inheritAliases: false
installDependenciesv2.1.0
When enabled and running a task, will automatically install toolchain dependencies if the lockfile,
manifest, or environment has changed changed since the last run. This is achieved through the
InstallDependencies action. Defaults to true.
javascript:
installDependencies: false
plugin
Configures the location of the .wasm plugin file that moon will use to run this toolchain.
Supports file:// (relative from .moon), https://, and github:// protocols.
Learn more about plugin locators.
custom-toolchain:
plugin: 'file://../path/to/plugin.wasm'
This field is not required for built-in toolchains. However, it can be configured to override the built-in plugin if you want to use your own implementation.
versionFromPrototoolsv2.0.0
When a toolchain supports the version setting, this setting controls whether the version will be
inherited from the root .prototools configuration file. This is useful for sharing a single
version across multiple toolchains, and only having to update it in one place.
When false, doesn't inherit a version. When true, matches the version specified in .prototools
using the same toolchain identifier. Otherwise a string can be provided to specify a proto-specific
identifier. Defaults to true.
node:
versionFromPrototools: 'nodejs'
nodejs = "~24"
Go
go
Run moon toolchain info go for all available settings.
JavaScript
javascript
Run moon toolchain info javascript for all available settings.
bun
Run moon toolchain info bun for all available settings.
This toolchain requires the javascript toolchain to also be enabled.
deno
Run moon toolchain info deno for all available settings.
This toolchain requires the javascript toolchain to also be enabled.
node
Run moon toolchain info node for all available settings.
This toolchain requires the javascript toolchain to also be enabled.
npm
Run moon toolchain info npm for all available settings.
This toolchain requires the node toolchain to also be enabled.
pnpm
Run moon toolchain info pnpm for all available settings.
This toolchain requires the node toolchain to also be enabled.
yarn
Run moon toolchain info yarn for all available settings.
This toolchain requires the node toolchain to also be enabled.
typescript
Run moon toolchain info typescript for all available settings.
Python
unstable_python
Run moon toolchain info unstable_python for all available settings.
unstable_pip
Run moon toolchain info unstable_pip for all available settings.
This toolchain requires the unstable_python toolchain to also be enabled.
unstable_uv
Run moon toolchain info unstable_uv for all available settings.
This toolchain requires the unstable_python toolchain to also be enabled.
Rust
rust
Run moon toolchain info rust for all available settings.