作者是 GNU Make 的超级粉丝,将其用作管理所有项目的顶级编排和自动化工具,不论项目大小。之前写过关于如何使用 Make 的文章,此篇重点强调工作流程的几个关键改进使其更轻量和易用。
- 为何在顶部添加另一个工具:有两个主要好处,一是工具既是文档也是自动化,二是在项目特定工作流程之上运行一层。作者喜欢 Make 是因为它能记录项目所需做的事及如何做,还可用于项目的元管理,如在 H2O Wave 项目中通过
make help
和Makefile
快速了解运行命令,以及通过 Make 轻松创建和重建虚拟环境等。 - 2025 年工作流程的变化:2024 年初写过使用 Make 的文章,之后有两点变化,一是极大简化了 Makefile 的编写,避免复杂的
help
规则和将复杂项目自动化推给其他工具,使 Make 成为管理项目的唯一接口和入口点;二是切换到uv
,它极大提高了生活质量,速度快且兼容pip
,能创建虚拟环境和管理 Python 解释器,如uv venv --seed --managed-python --python 3.10
。 工作流程:
- 前提条件:系统级别需安装 Make、Ripgrep、uv 等工具,可通过标准包管理器安装。
- Makefile:是任何新项目的起点,通常包含 4 个规则,如
PY=3.10
,help
规则通过rg
搜索 Makefile 中的目标,.venv
规则创建虚拟环境,install
规则安装项目依赖,destroy
规则删除虚拟环境。 - 常见问题:对于大型复杂项目的自动化工作流,在 Makefile 中捕获复杂逻辑并跨操作系统运行很困难,作者将其委托给
invoke
工具,如 Python 项目的打包工作可在invoke
的tasks.py
文件中处理,Makefile 只需调用invoke build
。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。