Sounds like your describing what I like to call a fancy build system
Something like Bazel[0], Buck[1] Pants[2], etc. One of their main features is robust caching of build artifacts, which is helpful for larger projects. But they require some major investment compared to your typical `scripts/build.sh`.
[0]: https://bazel.build [1]: https://buck.build [2]: https://www.pantsbuild.org