Skip to main content

fyrer.yml Task Configuration: Complete Field Reference

A task is a named command inside a package. Tasks declare what to run, what they depend on, what files they read and produce, and how they behave — cached, persistent, or watched. fyrer resolves dependencies between tasks across all packages, runs independent tasks concurrently, and streams every task's output with a colorized prefix.

Task fields

cmdstringrequired

The shell command to run. Executed via sh -c on Unix/macOS or cmd /C on Windows.

depends_onstring[]

Task IDs this task must wait for. Use package:task for cross-package deps, or a bare task name for same-package deps.

inputsstring[]

Glob patterns (relative to the package root) of files that define the task's cache key. Changes to these files invalidate the cache.

outputsstring[]

Glob patterns of files the task produces. Archived on cache write; restored on cache hit.

ignorestring[]

Glob patterns excluded from both inputs and outputs.

cachebooleandefault: false

When true, a successful run is cached and skipped on future runs when inputs are unchanged. Cannot be combined with persistent or watch.

persistentbooleandefault: false

Marks a long-running task (e.g., a dev server). The task runs until you quit fyrer. Cannot be combined with cache.

watchbooleandefault: false

Marks a task that restarts when watched inputs change. Cannot be combined with cache. When enabled, fyrer polls the task's inputs globs every 300ms and restarts the task (debounced 300ms) when files change.

timeoutstring

Kill the task after this duration (e.g., 30s, 2m). Must be greater than zero.

cwdstring

Working directory for the command, relative to the package root. Must exist inside the package root.

envmap<string, string>

Per-task environment variables. Highest precedence of all env sources.

env_filestring

Per-task .env file path, relative to the package root.

Full task example

tasks:
build:
cmd: bun build src/index.ts --outdir dist
depends_on:
- ui:build
inputs:
- src/**
- package.json
outputs:
- dist/**
ignore:
- node_modules/**
cache: true
timeout: 5m
cwd: subdir
env:
NODE_ENV: production
env_file: .env.production

Validation rules

  • cmd must not be empty.
  • timeout must be greater than zero if specified.
  • cwd must be relative and must exist inside the package root.
  • inputs, outputs, and ignore must be valid glob patterns.
  • cache cannot be combined with persistent or watch — a cached task must be finite and non-restarting.
  • env_file must be relative and must exist at the time fyrer starts.