Introduction
Jake is a modern command runner that combines the best features of GNU Make and Just:
- From Make: File-based dependency tracking, parallel execution, incremental builds
- From Just: Clean syntax, parameters, conditionals, imports, .env loading
- New in Jake: Glob patterns, pre/post hooks, better error messages, watch mode
Why Jake?
Section titled “Why Jake?”Make is powerful but cryptic. Just is friendly but limited. Jake gives you both:
| Feature | Make | Just | Jake |
|---|---|---|---|
| File-based dependencies | Yes | No | Yes |
| Clean syntax | No | Yes | Yes |
| Parallel execution | Yes | No | Yes |
| Glob patterns | No | No | Yes |
| Import system | No | Yes | Yes |
| Conditionals | No | Yes | Yes |
| Pre/post hooks | No | No | Yes |
| .env loading | No | Yes | Yes |
| Watch mode | No | No | Yes |
Key Features
Section titled “Key Features”File Dependencies
Section titled “File Dependencies”Like Make, Jake tracks file modifications and only rebuilds what’s changed:
file dist/app.js: src/**/*.ts esbuild src/index.ts --bundle --outfile=dist/app.jsClean Syntax
Section titled “Clean Syntax”Like Just, Jake uses readable syntax without cryptic symbols:
task deploy env="staging": @confirm "Deploy to {{env}}?" ./deploy.sh {{env}}Parallel Execution
Section titled “Parallel Execution”Run independent tasks simultaneously:
jake -j4 all # Use 4 parallel jobsBuilt-in Watch Mode
Section titled “Built-in Watch Mode”Re-run tasks automatically when files change:
jake -w build