From Makefiles to Bun:
Modern Task Automation Tools
The larger a project grows, the more likely you’ll need small tools to simplify repetitive tasks. Even for this website, I use scripts to generate templates for new articles—pre-filled with sequential numbers, dates, and predefined frontmatter. To manage such commands, many projects still rely on Makefiles. Personally, though, I prefer Task as a modern, cross-platform alternative.
It’s not uncommon to see classic shell scripts used for these little helpers. These days, you’ll even encounter zsh-specific scripts, which can lead to compatibility issues across macOS and Linux. Since I often work with Windows, I’ve long since switched to a different solution.
I work extensively with Go. Depending on the complexity of the problem, I sometimes write a small Go
program to handle it. With go install
, such tools are quick to set up and update, and the Go compiler is always at
hand. However, this approach loses the classic “scripting” feel and isn’t quite as lightweight as it could be for small
tasks.
For my personal projects, I’ve found a more elegant approach that keeps the lightweight nature of scripting: TypeScript with Bun. Like Go, Bun is a single binary, making it easy to deploy anywhere. What I find especially brilliant is its built-in shell abstraction:
Bun Shell makes shell scripting with JavaScript & TypeScript fun. It’s a cross-platform bash-like shell with seamless JavaScript interop.
The best part? It works consistently across all systems, including Windows. I use Bun for small mocks and similar tasks. Another tool worth checking out in this context is ElysiaJS.