just

A handy command runner that lets you save and run project-specific commands, like make but without the gotchas.

just is a command runner for saving and running project-specific commands. It's similar to make, but focused purely on running commands rather than building files — no arcane tab requirements, no surprising behavior, just a clean justfile that anyone on your team can read and run.

Features

  • Simple syntaxjustfile recipes are easy to read and write, with none of make's footguns
  • Cross-platform — works on Linux, macOS, and Windows
  • Parameters — recipes can accept arguments with optional defaults
  • Dependencies — recipes can depend on other recipes
  • .env support — automatically loads a .env file if present
  • Shell selection — choose which shell runs your recipes (bash, zsh, fish, PowerShell, etc.)
  • Listingjust --list gives a clean overview of all available recipes
  • Dotenv integration — load environment variables automatically from .env

Installation

cargo install just

Or via your package manager:

# Debian / Ubuntu (Ubuntu 23.10+ / Debian 13+)
apt install just

# Fedora
dnf install just

# macOS
brew install just

# Arch Linux
pacman -S just

# Windows (scoop)
scoop install just

Example justfile

# Default recipe — shown when you run `just` with no arguments
default:
    just --list

# Build the project
build:
    cargo build --release

# Run tests
test:
    cargo nextest run

# Run tests with coverage
coverage:
    cargo llvm-cov --html

# Format and lint
check:
    cargo fmt --check
    cargo clippy -- -D warnings

# Build and immediately run
run *args:
    cargo run -- {{args}}

# Bump version and tag a release
release version:
    @echo "Releasing version {{version}}"
    cargo set-version {{version}}
    git commit -am "chore: release v{{version}}"
    git tag v{{version}}
    git push --follow-tags

Usage

# List all available recipes
just --list

# Run a recipe
just build

# Run with arguments
just run --flag value

# Run from any subdirectory (searches upward for justfile)
just test

# Pass arguments to a parameterised recipe
just release 1.2.0

# Run multiple recipes in sequence
just check test build

Why not make?

make is a build system that happens to be used as a command runner. It comes with surprising rules around tabs vs spaces, implicit targets, and file-modification tracking that get in the way when all you want is to run a command. just is laser-focused on that one job and does it cleanly.