# just — A Handy Command Runner Written in Rust > just is a make-inspired command runner that saves and runs project-specific commands without make's historical baggage — simple `justfile` syntax, argument support, cross-platform, single Rust binary. ## Install Save as a script file and run: # just — A Handy Command Runner Written in Rust ## Quick Use ```bash brew install just # Create justfile cat > justfile << 'EOF' default: test lint test: go test ./... lint: golangci-lint run deploy env="staging": ./deploy.sh {{env}} EOF # Run just just deploy production ``` ## Introduction `just` is a pragmatic replacement for `make` when you don't actually need build-graph semantics — you just need a project-scoped command book. Where `make` treats every target as a filesystem artifact and punishes you for whitespace mistakes, `just` treats recipes as named shell commands with arguments, defaults, and interpolation that don't fight you. ## What just Does - Runs recipes defined in a `justfile`. - Supports named arguments, defaults, dependencies between recipes. - Evaluates shell per recipe (bash/zsh/pwsh configurable). - Exports environment variables per recipe or globally. - Lists recipes with `just --list`. ## Architecture Overview just parses the `justfile` into an AST of recipes and expressions, resolves the dependency graph (without timestamp semantics), and executes each recipe as a shell subprocess with interpolation applied. Variable assignment is lazy; `set shell := ["bash", "-uc"]` picks the interpreter. ## Self-Hosting & Configuration - Install via brew, cargo, scoop, winget, apt (snap), dnf. - `just --init` bootstraps a justfile. - Config block: `set dotenv-load := true` auto-loads `.env`. - `set windows-powershell := true` flips to PowerShell on Windows. - `.justfile` and `justfile` both recognized. ## Key Features - Clean recipe syntax with real arguments (not `$1` hacks). - Cross-platform: single binary for Linux/macOS/Windows. - Dotenv autoloading. - Per-recipe shebangs — write a recipe in Python or Node inline. - `just --choose` opens fzf picker. ## Comparison with Similar Tools - **make** — universal; archaic syntax, tab-sensitive, filesystem-focused. - **npm scripts** — Node-only; no arguments, no deps. - **task (go-task)** — YAML-based; similar niche. - **mage** — Go-based; requires Go. - **invoke (Python)** — rich but Python-only. ## FAQ **Q: Does it replace make for building C projects?** A: No — use make for compilation. just is for workflow recipes. **Q: Can I call recipes from other recipes?** A: Yes — `recipeA: recipeB` as dependency, or `just recipeB` inline. **Q: How about secrets?** A: `set dotenv-load` + `.env` + gitignore. **Q: Windows without WSL?** A: Yes, runs natively. Set `set shell := ["pwsh.exe", "-c"]`. ## Sources - https://github.com/casey/just - https://just.systems --- Source: https://tokrepo.com/en/workflows/43a1d1e0-38c4-11f1-9bc6-00163e2b0d79 Author: Script Depot