如何创建自文档化的 Makefile
我最喜欢的完全不使用 Makefile 的新方法是什么?创建个性化的、每个项目存储库工作流命令别名,以便您可以签入。
Makefile 能提升你的 DevOps 并让开发者满意吗?如果新来的开发者一开始不用从你的 README 文件中复制粘贴命令,那该有多好?如果:
pip3 install pipenv
pipenv shell --python 3.8
pipenv install --dev
npm install
pre-commit install --install-hooks
# look up how to install Framework X...
# copy and paste from README...
npm run serve
…您可以直接输入:
make start
...然后开始工作?
有所作为
我make
每天都会用它来摆脱常见的开发活动(例如更新程序、安装依赖项和测试)的繁琐。为了使用 Makefile(GNU make)完成所有这些工作,我们使用Makefile 规则和配方。POSIX 风格的 make 也存在类似的类似规则,例如目标规则;这里有一篇关于 POSIX 兼容 Makefile 的精彩文章。
以下是我们可以make
简化的一些事情的示例(抱歉):
update: ## Do apt upgrade and autoremove
sudo apt update && sudo apt upgrade -y
sudo apt autoremove -y
env:
pip3 install pipenv
pipenv shell --python 3.8
install: ## Install or update dependencies
pipenv install --dev
npm install
pre-commit install --install-hooks
serve: ## Run the local development server
hugo serve --enableGitInfo --disableFastRender --environment development
initial: update env install serve ## Install tools and start development server
现在我们有一些命令行别名可以查看了!好主意!如果你还在疑惑那个奇怪的##
注释语法是怎么回事,那就更好了。
自文档化的 Makefile
别名很棒,只要你不用不停地输入 就能记住它们的含义和作用cat Makefile
。当然,你需要一个help
命令:
.PHONY: help
help: ## Show this help
@egrep -h '\s##\s' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'
借助一些命令行魔法,此egrep
命令获取 的输出MAKEFILE_LIST
,对其进行排序,并用于awk
查找符合##
模式的字符串。然后,它会打印出有用的格式化版本的注释。
我们将其放在文件顶部,以便它成为默认目标。现在,要查看所有便捷的快捷键及其功能,只需运行make
, 或make help
:
help Show this help
initial Install tools and start development server
install Install or update dependencies
serve Run the local development server
update Do apt upgrade and autoremove
现在我们有了我们自己的个性化和特定于项目的 CLI 工具!
使用自文档化的 Makefile 来改进 DevOps 流程的可能性几乎无穷无尽。你可以用它来简化任何工作流程,并培养出一些非常满意的开发人员。
鏂囩珷鏉ユ簮锛�https://dev.to/victoria/how-to-create-a-self-documenting-makefile-2b0e