¿Qué es un Makefile?
Este es un archivo de texto llamado Makefile en la raíz de nuestro proyecto que contiene una serie de comandos a ejecutar desde la terminal. Es una herramienta de automatización especialmente cuando se utilizan comandos repetitivos, para hacer uso de esa herramienta es necesario tener instalado el software make que generalmente ya viene instalado en los sistemas Unix/Linux.
¿Cómo se estructura un Makefile?
La estructura básica de un Makefile es la siguiente:
target:
command
- target: Es el nombre del comando que vas a usar.
- command: Es la instrucción que realmente se ejecutará en la terminal.
Por ejemplo:
run:
python app.py
Si ejecutas make run en la terminal, se ejecutará python app.py.
Además, puedes usar variables para organizar mejor tu archivo:
PYTHON = python
MANAGE = $(PYTHON) manage.py
¿Dónde se puede usar?
Un Makefile es muy útil para mejorar el flujo de trabajo en un proyecto. Es ideal cuando hay comando muy largos y repetitivos en el proyecto, por ejemplo con Docker. En lugar de recordarlos cada vez, los guardas en un Makefile y solo necesitas ejecutar make <command>.
Aquí tienes un ejemplo de un Makefile usado en un proyecto con Django:
PYTHON = python
MANAGE = $(PYTHON) manage.py # Default target
.DEFAULT_GOAL := help
help:
@echo "Available targets:"
@echo " run : Run the Django development server"
@echo " test : Run Django tests"
@echo " migrate : Run Django migrate"
@echo " lint : Lint the code using Black and pep8"
run:
$(MANAGE) runserver --settings=todoapp.settings.ci
test:
$(MANAGE) test --settings=todoapp.settings.ci
migrate:
$(MANAGE) migrate --settings=todoapp.settings.ci
lint:
@echo "Linting with flake8..."
${PYTHON} -m flake8 .
format:
@echo "Linting with Black..."
${PYTHON} -m black .
Un Makefile no es complicado de aprender y puede ahorrarte mucho tiempo. En lugar de memorizar comandos largos, simplemente los defines una vez y luego solo escribes make <comando>.