Justfile Authoring
Follow existing conventions
- •Locate the nearest
justfileor.justfileto the working directory and edit in place. - •Preserve naming style, indentation, and grouping conventions.
- •Keep diffs minimal; avoid renaming recipes unless requested.
Edit workflow
- •Read the existing
justfiletop to bottom; notesetdirectives, variables, aliases, and groups. - •Add or update recipes using the same structure and indentation.
- •Ensure dependencies and parameters are correct and consistent.
- •If a recipe should be hidden from listings, mark it private or prefix with
_.
Syntax essentials
- •
Recipe:
justbuild target="app": clean cargo build --release --bin {{target}} - •
Dependencies: run before the recipe body; parameterized deps are wrapped in parentheses.
justrebuild: clean build build arch: (clean arch) cargo build --target {{arch}} - •
Parameters: defaults supported; variadics use
*(zero or more) or+(one or more).justtest suite="all": cargo test --tests {{suite}} backup *files: tar czf backup.tar.gz {{files}} - •
Exported parameters: prefix with
$to pass as environment variables.justtest-with-env $TEST_MODE: echo "$TEST_MODE" - •
Variables and interpolation:
justapp := "myapp" build: echo "{{app}}" - •
Default recipe: place first if you want it to run with
just.justdefault: @just --list
Settings
Use set to configure behavior globally.
just
set dotenv-load := true set shell := ["bash", "-eo", "pipefail", "-c"] set working-directory := "ios"
Attributes and helpers
Common attributes:
- •
[group('name')]or[group: 'name']to categorize recipes in listings. - •
[working-directory('path')]to override the cwd for one recipe. - •
[private]to hide a recipe or alias fromjust --list. - •
[doc('description')]to control list output text. - •
[confirm('prompt')]to request confirmation. - •
[linux],[macos],[windows]for platform-specific recipes. - •
[no-cd]to run in the invoking directory instead of the justfile directory. - •
[positional-arguments]for positional-argument recipes.
Aliases:
just
alias b := build
Shebang recipes
For multi-line scripts, start the body with a shebang.
just
release:
#!/usr/bin/env bash
set -euo pipefail
./scripts/release.sh
Editing checklist
- •Keep indentation consistent (spaces or tabs, not both, within a recipe).
- •Use
@on a line (or@before the recipe name) to suppress command echoing. - •Prefer
groupanddocattributes for clarity injust --list. - •Avoid unused variables, aliases, or recipes.
- •For repo-specific paths, anchor to the existing
working-directoryconventions.