DEV Community

Discussion on: Makefiles and alternatives?

Collapse
 
louy2 profile image
Yufan Lou

The concept of make is three prong: tracking dependency, monitoring recency, and executing commands based on the previous two. Sounds simple enough.

However, since each system is different, standardization on the concept of make means almost nothing. Almost each programming language has a slightly different way to track dependency, especially when external dependency is involved, so they often make their own tool. If you mostly write JavaScript, sticking to npm is not bad. If you like YAML, nothing wrong with robo. There are also significant communities around gulp and grunt.

Another route is to adopt an integrated build system made by a big company with existing polyglot build rules. On this front we have Google's Bazel and Facebook's Buck, both coming from Google's internal build system Blaze. They are reasonably supported with rules for many languages. A community one is Nix, which you can try if you feel scholarly and adventurous.

An alternative of concurrently is npm-run-all, which is specific to npm scripts.