Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Comparisons

Task runners are often tied to a language ecosystem or designed around build artifacts. CJTaskrunner instead provides a small, project-local catalog of imperative commands.

just

  • Inspired by make
  • Lists recipes from command line
  • Really simple to use
  • Rich expression language
  • Built-in functions
  • Support for modules and imports
  • Uses the shell for execution
  • Tasks can be shell scripts
  • Supports arbitrary scripting language

make

  • Target-based
  • Makefiles are declarative at the dependency-graph level
  • Designed for long build processes
  • Focused on orchestrating compiled artifacts
  • Doesn’t list tasks or document them easily
  • Values idempotency and deterministic results
  • Arbitrary tasks are secondary
  • Has a set of “conventions” and idiomatic ways of authoring files

rake

  • Target-based
  • Uses Ruby syntax and language constructs
  • Can be used outside Ruby projects
  • Lists tasks, which inspired CJTaskrunner’s summary mode
  • Can be used as an imperative task runner

Apache Ant

  • Target-based
  • Uses a verbose XML structure
  • Describes tasks with quoted XML attributes
  • Lots of syntax to learn
  • Lots of boilerplate and typing
  • Requires Java

Vite

  • Task- and target-based
  • Provides built-in features and plugins for web development
  • Uses JavaScript configuration
  • Requires Node.js
  • The holy grail of web build tools

Conclusion

These tools are all excellent. CJTaskrunner does not replace these tools. It provides a directory and launch point for them, while remaining sufficient for simple workflows on its own.