Skip to content

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

Make is powerful but cryptic. Just is friendly but limited. Jake gives you both:

FeatureMakeJustJake
File-based dependenciesYesNoYes
Clean syntaxNoYesYes
Parallel executionYesNoYes
Glob patternsNoNoYes
Import systemNoYesYes
ConditionalsNoYesYes
Pre/post hooksNoNoYes
.env loadingNoYesYes
Watch modeNoNoYes

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.js

Like Just, Jake uses readable syntax without cryptic symbols:

task deploy env="staging":
@confirm "Deploy to {{env}}?"
./deploy.sh {{env}}

Run independent tasks simultaneously:

Terminal window
jake -j4 all # Use 4 parallel jobs

Re-run tasks automatically when files change:

Terminal window
jake -w build