Just: Just a Command Runner
Role and Purpose of just
- Framed explicitly as a command runner, not a build system.
- Intended to replace ad‑hoc shell scripts and
.PHONYMake targets for common dev tasks (lint, test, deploy, CI steps). - Always runs from the project root and can search parent directories for a
justfile, which many find ergonomically useful.
Compared to Make and Build Systems
- Fans say
justis much simpler than Make: no incremental build logic, no.PHONYquirks, fewer syntax gotchas, easier to learn for non–shell experts. - Make supporters argue its artifact/dependency model and incremental builds are a major advantage, especially for heavy tasks (e.g., rendering, file conversion).
- Consensus: if you need incremental builds or complex DAGs, use Make, Ninja, Taskfile, Bazel, Nix, etc. If you mostly run commands and pipelines,
justis a better fit.
Shell Scripts, npm Scripts, and Alternatives
- Some say a directory of scripts +
$PATHor npm/yarnscriptsis sufficient and avoids an extra dependency/DSL. - Others find shell painful (quoting, error handling, portability, “scripts grow into monsters”) and appreciate
just’s consistent interface, built‑in functions, and self‑documentation (just --list/ default “help” recipe). - Alternatives mentioned: Taskfile, mise tasks, Invoke-Build (PowerShell), Rake, Mage, babashka tasks, Argc, custom bash/direnv runners, fj.sh, Ninja, frof, bluish, Shake, pixi.
Cross‑Platform and Windows Considerations
- Several users praise
just’s Windows support and ability to choose shell per OS (PowerShell, cmd, sh, bash via shebangs). - Critics note reliance on a shell and needing to install
justat all as added friction, especially versus ubiquitous POSIXsh. - Some projects embed
justvia Node packages so contributors don’t install it manually.
Strengths Reported by Users
- Lower “mental burden” than Make; quick to adopt across teams.
- Clear recipes with descriptions; good onboarding for new contributors.
- Supports OS‑specific recipes, recipe composition, parameter passing that many find more ergonomic than Taskfile’s
--style. - Works well in CI pipelines and for organizing ~10–20 project commands.
Critiques and Reservations
- Another DSL to learn; doesn’t replace Make as a real build system.
- Lacks incrementalism, parallelism, and rich flags compared to more “modern” task runners (e.g., mise).
- Some prefer fully declarative or language‑native tooling and see command runners as encouraging brittle, stateful workflows.