A replacement to GNU Make with scripting
I'd love a make replacement based on a scripting language, but without loads of dependencies (like node/ bun etc).
I ❤️ being able to simply run make
from a terminal:
make build
# or
make test
# ... even
make vs
# 👆 This is particularly lazy as it just
# loads Visual Studio with the correct solution for me...
# I actually got an alias of 'm' too.
I’ve even got a common Makefile I bring into all my projects to give me some sensible helpers like auto-displaying the available targets etc… you can find that here.
But… what I’m after is something that can act like make
does, but has more script-friendliness.
A cross between a task runner and a scripting system.
I’ve looked at a few JS-based ones which looked good, but nothing really fits the bill…
I wanted something with minimal dependencies - just like make
, install it and run.
The problem with any of the JS ones is that you’ll need to make sure you’re using node
or bun
(or even deno
), and then you’ve got to make sure its the right version, with the right dependencies.
Important
It’s all too painful…
I really liked the idea of a TypeScript-based one. TS is simple, its approachable, its got rich frameworks and massive re-use through functions in the ‘Taskfile’ etc.
…but, then I’m back to node
and bun
.
I contemplated, and even played with, a Go implementation that could parse and execute TypeScript within the app. But as you can imagine that got very complex very quickly.
Now I’m wondering if something like CS-Script could fit the bill?
Either host the engine (ideally in AOT build for minimal self-contained executables) or just install the CS-Script app, and use C# as the Taskfile
…
Some other alternatives to CS-Script include:
BTW, I have seen Taskfile but I think there’s already too much YAML in the world… and it isn’t a nice scripting experience.
2025-03-05 … found Hereby
I’ve just found Hereby which looks like a good candidate. It has a few dependencies, but it looks like it could be a good fit… I generally use bun for everything, so that’s usually installed anyway.
And it’s no drama to install bun in a pipeline, so that satisfies my want for a TypeScript-based task runner…
Looks active on GitHub and has a good amount of stars and recent commits.