Skip to main content


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"

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.



  • -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.


  • --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