Skip to content

Taskfile 版本管理

随着新功能的添加和旧功能的移除,Taskfile 模式会逐步演变。本文档说明如何利用 Taskfile 的模式版本号,确保您的 Taskfile 使用者正在使用正确的 Task 版本。

Taskfile 版本的含义

每个 Taskfile 顶部的模式版本号对应着 Task CLI 的某个版本,进而代表了该版本所提供的功能特性。创建 Taskfile 时,您应指定支持所需功能的最低 Task 版本。如果尝试运行 Taskfile 时使用的 Task 版本未达到最低要求,程序将报错退出。例如,某个 Taskfile 的开头为:

yaml
version: '3.2.1'

使用 Task v3.2.0 版本执行时将会报错退出。使用 v3.2.1 或更高版本则可正常运行。

Task 接受所有符合 SemVer 规范的版本字符串,包括省略次版本号或修订号的简写形式。例如 33.03.0.0 都具有相同含义且均为有效格式。多数 Taskfile 仅指定主版本号,但在需要与他人共享 Taskfile 时,更精确的版本指定会更有帮助。

例如下面这个使用了别名功能的 Taskfile:

yaml
version: '3'

tasks:
  hello:
    aliases:
      - hi
      - hey
    cmds:
      - echo "Hello, world!"

别名功能自 Task v3.17.0 开始引入,但该 Taskfile 仅指定了 3 作为版本号。这意味着安装了 v3.16.0 或更低版本的用户在运行任务时,可能会收到令人困惑的错误信息——因为 Taskfile 表明任何高于 v3.0.0 的版本都应兼容。

此时我们应该将文件开头改为:

yaml
version: '3.17'

现在当有人尝试使用旧版 Task 运行该 Taskfile 时,将会收到错误提示,要求将其 Task 版本升级至 v3.17.0 或更高版本。

版本 1 和 2

Task 的版本 1 和版本 2 已不再官方支持,强烈建议仍在使用这些版本的用户升级至最新版 Task。

虽然 Task 的 version: 2 支持模式版本号,但其运行机制与上文讨论的版本控制方式并不完全相同,不能依赖其实现上述功能。