Skip to main content
warning

Documentation is currently for moon v2 and latest proto. Documentation for moon v1 has been frozen and can be found here.

Cheat sheet

Don't have time to read the docs? Here's a quick cheat sheet to get you started.

Tasks

Learn more about tasks and targets.

Run all build and test tasks for all projects

moon check --all

Run all build and test tasks in a project

moon check project

Run all build and test tasks for closest project based on working directory

moon check

Run a task in all projects

moon run :task

Run a task in all projects with a tag

moon run '#tag:task'
# OR
moon run \#tag:task
# OR
moon run :task --query "tag=tag"

Run a task in a project

moon run project:task

Run multiple tasks in all projects

moon run :task1 :task2

Run multiple tasks in any project

moon run projecta:task1 projectb:task2

Run a task in applications, libraries, or tools

moon run :task --query "projectLayer=application"

Run a task in projects of a specific language

moon run :task --query "language=typescript"

Run a task in projects matching a keyword

moon run :task --query "project~react-*"

Run a task in projects based on file path

moon run :task --query "projectSource~packages/*"

Task configuration

Learn more about available options.

Disable caching

moon.yml
tasks:
example:
# ...
options:
cache: false

Re-run flaky tasks

moon.yml
tasks:
example:
# ...
options:
retryCount: 3

Depend on tasks from parent project's dependencies

moon.yml
# Also inferred from the language
dependsOn:
- 'project-a'
- 'project-b'

tasks:
example:
# ...
deps:
- '^:build'

Depend on tasks from arbitrary projects

moon.yml
tasks:
example:
# ...
deps:
- 'other-project:task'

Run dependencies serially

moon.yml
tasks:
example:
# ...
deps:
- 'first'
- 'second'
- 'third'
options:
runDepsInParallel: false

Run multiple watchers/servers in parallel

moon.yml
tasks:
example:
command: 'noop'
deps:
- 'app:watch'
- 'backend:start'
- 'tailwind:watch'
preset: 'server'

The local or persistent settings are required for this to work.

Languages

Run system binaries available on PATH

moon.yml
language: 'bash' # batch, etc

tasks:
example:
command: 'printenv'
moon.yml
tasks:
example:
command: 'printenv'
toolchain: 'system'

Run language binaries not supported in moon's toolchain

moon.yml
language: 'ruby'

tasks:
example:
command: 'rubocop'
toolchain: 'system'

Run npm binaries (Node.js)

moon.yml
language: 'javascript' # typescript

tasks:
example:
command: 'eslint'
moon.yml
tasks:
example:
command: 'eslint'
toolchain: 'node'