2026-03-13

En todo proyecto personal mío, lo primero que hago es crear un Makefile con los comandos que más uso. make server, make test, make build. Nunca necesito recordar nada, solo miro el Makefile y listo.
En el proyecto de la empresa donde trabajo, usamos Nx y no existe Makefile. Los comandos son todos vía npx nx. Funcionan bien, pero yo quería mantener mi workflow de siempre: abrir la terminal y ejecutar make server.
No puedo simplemente crear un Makefile en el proyecto. Sería contaminar el repositorio con config personal. Tampoco puedo agregar Makefile en el .gitignore del proyecto por la misma razón.
Y no puedo poner Makefile en el ignore global (~/.gitignore) porque uso Makefile en todos mis proyectos personales y los commiteo.
Creé una convención personal: usar el nombre local.mk para Makefiles locales. Agregué local.mk en mi ~/.gitignore global, y sobrescribí el comando make en mi aliases.zsh personal de Oh-My-Zsh:
make() {
if [[ -f local.mk && $# -gt 0 ]]; then
command make -f local.mk "$@"
else
command make "$@"
fi
}
Si existe un local.mk en el directorio actual y paso argumentos, usa el archivo local. Si no existe, ejecuta make normalmente. Los proyectos personales con Makefile siguen funcionando como siempre.
En el proyecto de la empresa, creé un local.mk con los comandos que necesito:
.PHONY: server db api
server:
trap 'kill 0' INT TERM; npx nx up db & sleep 5 && npx nx serve api & wait
db:
npx nx up db
api:
npx nx serve api
Ahora ejecuto make server y levanta la base de datos y la API de una vez. make db levanta solo la base de datos. make api levanta solo la API. Todo dentro del workflow al que ya estoy acostumbrada, sin tocar nada del repositorio.