What Just Does
- Recipes — named task definitions in a justfile
- Arguments — positional and named with defaults
- Dependencies — recipes can depend on other recipes
- Shebang recipes — run entire recipe with python/node/bash
- String interpolation —
{{var}}substitution - Env vars — dotenv support via
set dotenv-load - Conditional —
if os == "macos" { ... } - Private recipes — prefix with
_ - Groups — organize recipes into groups
Architecture
Parses the justfile, builds a DAG of recipes, and runs them via the configured shell (sh by default, or any shebang). No make-style file timestamps or incremental logic — simpler and more predictable.
Self-Hosting
Single Rust binary.
Key Features
- Modern clean syntax
- Cross-platform (macOS, Linux, Windows)
- Recipe arguments with defaults
- Dependencies and groups
- Shebang recipes for multi-language tasks
- Env var integration
- Nice error messages
just --listauto-help- Tab or space indentation
Comparison
| Tool | Language | Scope | Strengths |
|---|---|---|---|
| Just | Rust | Task runner | Simple modern syntax |
| Make | C | Build + tasks | Ubiquitous, incremental |
| Taskfile | Go | Task runner | YAML-based |
| npm scripts | JS | Node projects | Built into npm |
| mise tasks | Rust | Task runner | Integrated env manager |
| cargo-make | Rust | Rust projects | Rust-focused |
FAQ
Q: How does it differ from Make? A: Just doesn't do incremental builds (no file-timestamp tracking) — it focuses on task running. The syntax is cleaner: no mandatory tabs, no .PHONY pitfalls. Great for project tasks, not for large C/C++ builds.
Q: Can it be used in CI?
A: It's a great fit. In CI, just ci runs all checks in one line — and developers get exactly the same experience locally.
Q: Does it support include?
A: Yes — import syntax (v1.14+) lets you reuse recipes.
Sources & Credits
- Docs: https://just.systems
- GitHub: https://github.com/casey/just
- License: CC0