开发者生态
morning
使用任务运行器执行常见编码任务
摘要
(Originally published in 2019. I pulled this one from the archives and gave it a fresh makeover after a reader reached out to tell me they misses this article.) In my day to day as a software develope...
the
run
this
code
from
can
need
these
and
day
2026-08-04
1 阅读
约7分钟阅读
speckx
字号:
(最初发表于 2019 年。在一位读者告诉我他们错过了这篇文章后,我从档案中取出了这篇文章,并对其进行了全新的改造。)在我作为软件开发人员的日常工作中,我经常在不同的代码存储库之间切换。每个存储库都可以用不同的技术堆栈编写,但我需要在所有这些存储库中运行一些常见任务,无论堆栈如何:我需要安装依赖项、构建源代码、检查代码、格式化它、运行测试、运行数据库迁移、部署到临时环境、创建新版本、启动依赖服务,您明白了。根据每个存储库中使用的具体工具,我必须记住一些笨重的咒语才能从命令行调用。是不是要格式化rust fmt?混合 deps.update 来更新依赖项?是 ./gradlew build 还是我们再次切换回 mvn?这么多年过去了,它是yarn、npm还是pnpm?我需要将任何参数传递给 npm run prettier 吗?再次从头开始运行所有迁移的三步命令是什么?我不想记住这些。我希望能够说“构建代码”、“lint it”、“格式化它”、“运行迁移”、“安装依赖项”。为了让我的生活更轻松一点,我经常创建方便的工具,使我能够以相同的方式运行常见任务,无论我在哪个存储库中。这使我能够应用肌肉记忆来完成我每天要做十几次的事情。我们可以通过几种方法来实现这一目标,从好的旧 bash 脚本和 make 到更现代的工具,如 mise 和 just 。有些人已经开始将这些工具称为“任务运行程序”,所以我想这就是我将在这里坚持使用的名称。让我们一起快速浏览一下这些选项。一个简单的 Bash 脚本 我们可以编写一个简单的 shell 脚本(或者向我们选择的法学硕士寻求帮助)来充当我们需要扰乱代码的常用命令的小包装器。这是您可以使用的示例。在这个例子中,我假设您使用的是node/npm/javascript。如果你不知道,我相信你可以自己填空。 #!/usr/bin/env bash set -e function use { # 打印使用信息 } function install { # 安装依赖项 npm run ci } function build { # 触发构建过程 npm run build } function test { # run test suite # 你甚至可以在一个命令中运行多个步骤,很酷吧? npm run test:unit npx run playwright } function format { # 它非常适合隐藏我们需要传递给底层命令的参数 npm run prettier --write } if [[ $# -lt 1 ]];然后用法 exit 1 fi TARGET = $1 case $TARGET in "help") 用法 ;; “安装”)安装;; “构建”)构建;; “测试”)测试;; “格式”)格式;; *) 失败“未知命令'${TARGET}'”用法退出1;; esac 将该脚本以您喜欢的文件名保存在存储库的根目录中。选择一个简短而清晰的名称,您将多次输入它(我倾向于使用 run )。哦,不要忘记使用 chmod +x run 使其可执行。有了这个脚本,您可以简单地使用 run build 、 run lint 、 run test 并添加项目可能需要的任何其他命令。使用 shell 脚本的好处是你有很大的灵活性。您可以执行更复杂的任务并轻松添加更复杂的验证,以防止出现常见问题,例如,如果您想避免有人意外破坏 PROD 数据库。如果您的 bash 脚本变得难以使用,您可以开始将上面脚本中概述的各个函数提取到专用的 shell 脚本中。常见的约定是将它们存储在存储库中的 bin/ 目录中,但这实际上取决于您。 Bash 是此类简单自动化任务的自然选择。它可在大多数开发人员机器(以及您的 CI/CD 服务器)上使用,并且非常灵活。如果不是它有问题的语法就好了……Make make 是我们可以使用的另一个经典工具。它诞生于 20 世纪 70 年代,作为构建自动化工具经受住了时间的考验,并且几乎已经安装在每个开发人员的机器上。我们可以稍微扭曲 make 将其变成一个简单的任务运行程序,并忽略它提供的大多数更强大的功能。 make 在当前目录中查找名为 Makefile 的文件来确定它应该执行的操作。 Makefile 是一个纯文本文件,它定义了您可以执行的不同规则。规则遵循以下模式: 目标:要执行的依赖项系统命令 目标定义如何从命令行调用规则。 make test 会查找名为“test”的规则并执行您定义的命令。与上面的 bash 脚本类似的简单 Makefile 可能如下所示: .PHONY : install build test format install : npm run ci build : npm run build test : npm run test:unit npx run playwright format : npm run prettier --write 注意 请记住,make 对缩进很挑剔。您需要使用制表符而不是空格来缩进命令。复制上面的代码片段可能不起作用,除非
这篇文章对您有帮助吗?
订阅66必读
每日精选科技资讯,直达你的邮箱