Back to docs
Recipe

Taskfile primer

Replace Make with a single portable YAML file that runs on Windows, macOS, and Linux — no runtime dependencies.

Why Taskfile

Task is a Go binary that reads a Taskfile.yml and executes shell commands. No Makefile quirks, no Python venv scaffolding, no Node toolchain required. One binary, one YAML file, cross-platform builds.

Install

go install github.com/go-task/task/v3/cmd/task@latest

Also available via winget, brew, scoop, and npm.

Minimal example

version: '3'

tasks:
  build:
    cmds:
      - go build -o bin/meridian ./cmd/server
    sources:
      - '**/*.go'
    generates:
      - bin/meridian

  test:
    cmds:
      - go test ./...
    deps:
      - build

Key concepts

  • sources / generates — incremental builds. Task skips the task if generates are newer than sources.
  • deps — run other tasks first. DAG-aware, runs each dependency once.
  • vars — template variables with {{.VAR}} Go template syntax.
  • env — per-task environment variables, inherited by all commands.

Meridian usage

Meridian ships a root Taskfile.yml with targets for build, test, lint, and release. Run task --list to see all available targets.

Next: Cross-compilation recipe — build Meridian for Windows, Linux, and macOS from a single machine.