Makefile – это очень удобная штука, которая облегчит вам жизнь.
Предположим у вас есть проект и для его деплоя\билда фронта\тестирования ... требуется набирать в терминале много команд:
cp -n .env.example .env npm i npm run clean npm run build python manage.py migrate python manage.py add-dummy-data python manage.py test docker-compose up -d --build
Это ещё совсем немного, но в этом уже можно запутаться или забыть о чем-то, особенно если вы давно не работали с проектом или видите его впервые.
Именно для таких случаев в корне проекта создают Makefile, в котором хранят все наборы команд в упорядоченном виде. Т.е. весь этот набор действий можно совершить одной командой:
make build_all
Либо какое-нибудь действие(я) отдельно в том сочетании которое вам надо:
make env make build_front make fill_db make test make build_docker
Как все это реализовать? - Для начала создайте Makefile в корне проекта (на самом деле можно где угодно и даже несколько) и изучите простые правила его синтаксиса:
команда_1: <TAB><консольная команда 1> <TAB><консольная команда 2> # комментарий команда_2: команда_1 # набор команд-зависимостей, которые будут выполнены перед началом запуска текущей директивы <TAB><консольная команда 1>
Обратите внимание на ряд нюансов:
- <TAB> должен быть именно символом табуляции
- Makefile НЕ работает под Windows, только под Unix-подобными OS'ями
Таким образом мы можем оформить наш начальный набор команд следующим образом:
env: cp -n .env.example .env build_front: npm i npm run clean npm run build fill_db: python manage.py migrate python manage.py add-dummy-data test: python manage.py test build_docker: docker-compose up -d --build build_all: env build_front fill_db test build_docker # набор команд будет выполнен последовательно
Исчерпывающую информацию по Makefile можно найти на makefiletutorial.com.