As software developers, we often find ourselves working on multiple codebases, constantly hopping between programming languages and frameworks. Keeping track of all the commands and configurations for each project can be a mild annoyance. This is where the humble Makefile shines as a task runner documenting the most essential commands in a project.
Let's take this website's Makefile as an example:
.PHONY: fix dev lint
fix:
npx prettier --write .
dev:
npx remix dev
lint:
npx tsc
npx eslint app
npx prettier --check .
Now, this is a very simple Makefile, and lots of real world projects will have more complex ones, but the point still stands: When you revisit a project after an extended hiatus, a glance at the Makefile is often all you need to get back on track. The Makefile becomes a time capsule that encapsulates the project's critical commands and intentions.