Using Makefiles
Why do I think of Makefiles now? Simply because I opened a 3 months old project and it took me 10 minutes to figure out how to build it. Yes, I could have written a README, but it was a home project (I know I should have…).
There have been a few discussions about using Makefiles to manage javascript projects. There is especially this post which highlights the different parts of setting up a Makefile with a javascript project.
I remember the time you would just make into a project, or make help to get
the build options. This is discoverable and easy. It’s highly likely that a
developer will have make available.
Just to be clear, this is not a post against any specialised build tool, I love
my webpack (complicated) setup. But I now see webpack more alike gcc than
make.
So, I’ve decided to put a Makefile in all my projects. In the end, it’s the
simplest, easiest task runner in the wild. And it can invoke anything else if
needed (gulp, webpack, mix, ...). Even if it’s only .PHONY targets,
it’s fine, it’s an entry point.
You could always wrap rake with something like (written hastly, might end the
world):
RAKE_TASKS = $(shell bundle exec rake -T |cut -d ' ' -f 2| sed s/:/\\\\:/g )
.PHONY: ${RAKE_TASKS}
${RAKE_TASKS}:
bundle exec rake $@
Just throw an .editorconfig in your project to ensure your Makefile uses tabs
(I love how make is opiniated on this, even if I use spaces everywhere, I love
how consistent it is, and I’m looking at Python when I say that).
I will certainly write an update after some time with Makefile in my non C projects.