Makefile, Giga, Tools
https://giga.chat/link/gcsJhXtnzn Python, Project Structure
Makefile — это инструмент, используемый для автоматизации задач и последовательностей действий в Unix-подобных системах.
Он позволяет описать шаги выполнения определённой задачи и объединить их в единое целое,
упрощая доступ к повторяющимся действиям, таким как сборка проекта, тестирование,
очистка промежуточных файлов и другие административные задачи.
Makefile удобен тем, что:
- Позволяет избежать многократного ввода одних и тех же команд.
- Гарантирует последовательность шагов при выполнении заданий.
- Может использоваться как основа для автоматизации более сложных сценариев.
Структура Makefile:
Makefile состоит из целей (targets), правил и зависимостей.
Цель описывает конечный результат, который надо достичь, а правило определяет шаги для её выполнения.
Простой пример Makefile:
.PHONY: clean build test clean: rm -rf dist *.pyc __pycache__ build: python setup.py sdist bdist_wheel test: pytest tests/
Объяснение компонентов:
.PHONY:: эта директива показывает цели, которые не соответствуют физическим файлам, а представляют абстрактные действия.- цели (
clean,build,test): каждая цель соответствует конкретной задаче, которую необходимо выполнить. - правила: определяют команды, которые будут выполнены при достижении каждой цели.
Примеры полезных целей:
- Очистка мусора (
clean):
clean: find . -name '*.pyc' -delete find . -name '__pycache__' -exec rm -rf {} +
- Собрать дистрибутив (
build):
build: python setup.py sdist bdist_wheel
- Провести тесты (
test):
test: pytest tests/
- Проверка стиля кода (
check-style):
check-style: ruff check . isort --check-only .
- Запустить линтер (
lint):
lint: mypy . flake8 .
- Развёртывание (
deploy):
deploy: twine upload dist/*
Преимущества использования Makefile:
- Консистенция: единая точка входа для общих действий.
- Скорость: быстрое выполнение регулярных задач без необходимости запоминания команд.
- Масштабируемость: легко расширить набором новых задач по мере роста проекта.
Итоги:
Makefile — ценный инструмент для систематизации и ускорения регулярного выполнения задач в рамках проекта.
Его грамотное использование существенно облегчит жизнь разработчику, сэкономив время и уменьшив вероятность случайных ошибок.
Комментариев нет:
Отправить комментарий