moon.* configuration file defines project-level settings, metadata, tasks, and dependencies. This file is optional but recommended for customizing project behavior.
Configuration File
Location:<project-root>/moon.yml or <project-root>/moon.json
Type: ProjectConfig
Schema
Project Identity
Overrides the project identifier from the workspace Added in v1.18.0
projects setting.The primary programming language. Supports: If not defined, moon attempts to detect the language from configuration files.
bash, batch, go, javascript, php, python, ruby, rust, typescript, unknown, or custom values.The layer within a stack. Supports: Used for task inheritance and constraint enforcement.
application, automation, configuration, library, scaffolding, tool, unknown.The technology stack. Supports: Added in v1.22.0
backend, data, frontend, infrastructure, systems, unknown.Tags for categorizing, querying, and task inheritance.
Project Metadata
Expanded information about the project.Custom metadata fields are also supported:Custom fields added in v2.0.0
Dependencies
Other projects that this project depends on. Supports string IDs or objects with scope.Scopes:
production (default), development, build, peerCode Ownership
Defines ownership of source code within the project.Added in v1.8.0
Tasks
Maps file group IDs to lists of globs, paths, or environment variables.Reference in tasks using token functions:
Environment variables inherited by all tasks in the project.Supports substitution:
Docker Integration
Docker integration settings for the project.Added in v1.27.0
Toolchain Overrides
Overrides workspace-level toolchain settings.
Workspace Overrides
Overrides workspace-level settings for this project.
Complete Example
apps/web/moon.yml