Skip to main content

run

The moon run (or moon r) command will run one or many targets and all of its dependencies in topological order. Each run will incrementally cache each task, improving speed and development times... over time. View the official Run a task and Cheat sheet articles for more information!

# Run `lint` in project `app`
$ moon run app:lint
$ moon app:lint

# Run `dev` in project `client` and `server`
$ moon run client:dev server:dev

# Run `test` in all projects
$ moon run :test

# Run `test` in all projects with tag `frontend`
$ moon run '#frontend:test'

# Run `format` in closest project (`client`)
$ cd apps/client
$ moon run format

# Run `build` in projects matching the query
$ moon run :build --query "language=javascript && projectType=library"
info

How affected status is determined is highly dependent on whether the command is running locally, in CI, and what options are provided. The following scenarios are possible:

  • When --affected is provided, will explicitly use --remote to determine CI or local.
  • When not provided, will use git diff in CI, or git status for local.
  • To bypass affected logic entirely, use --force.
info

The default behavior for moon run is to "fail fast", meaning that any failed task will immediately abort execution of the entire action graph. Pass --no-bail to execute as many tasks as safely possible (tasks with upstream failures will be skipped to avoid side effects). This is the default behavior for moon ci, and is also useful for pre-commit hooks.

Arguments

Options

  • -f, --force - Force run and ignore touched files and affected status. Will not query VCS.
  • --dependents - Run downstream dependent targets (of the same task name) as well.
  • -i, --interactive - Run the target in an interactive mode.
  • --profile <type> - Record and generate a profile for ran tasks.
    • Types: cpu, heap
  • --query - Filter projects to run targets against using a query statement. v1.3.0
  • --summary - Display a summary and stats of the current run. v1.25.0
  • -u, --updateCache - Bypass cache and force update any existing items.
  • -n, --no-bail - When a task fails, continue executing other tasks instead of aborting immediately

Affected

  • --affected - Only run target if affected by changed files, otherwise will always run.
  • --remote - Determine affected against remote by comparing HEAD against a base revision (default branch), otherwise uses local changes.
    • Can control revisions with MOON_BASE and MOON_HEAD.
  • --status <type> - Filter affected based on a change status. Can be passed multiple times.
    • Types: all (default), added, deleted, modified, staged, unstaged, untracked

Configuration