I've tried, made, and contributed to countless task running solutions: make, npm (+yarn, pnpm, lerna), grunt, gulp, cargo-make, deno, task, apex, bazel, gradle, and who knows how many others.
just isn't perfect, but it's solidly "good" and has steadily improved over the years.