1
0
mirror of https://github.com/go-task/task.git synced 2025-03-23 21:29:29 +02:00
2024-01-11 01:19:58 +00:00

33 KiB

slug sidebar_position toc_min_heading_level toc_max_heading_level
/api/ 4 2 5

API 参考

命令行

该命令的语法如下:

task [--flags] [tasks...] [-- CLI_ARGS...]

:::tip

If -- is given, all remaining arguments will be assigned to a special CLI_ARGS variable

:::

缩写 标志 类型 默认 描述
-c --color bool true 彩色输出。 默认开启。 设置为 false 或使用 NO_COLOR=1 禁用。
-C --concurrency int 0 限制并发运行的 task 数。 零意味着无限。
-d --dir string 工作目录 设置执行目录。
-n --dry bool false 按运行顺序编译和打印 task,而不执行它们。
-x --exit-code bool false 传递 task 命令的退出代码。
-f --force bool false 即使 task 是最新的也强制执行。
-g --global bool false $HOME/Taskfile.{yml,yaml} 运行全局 Taskfile。
-h --help bool false 显示 Task 使用情况。
-i --init bool false 在当前目录创建一个新的 Taskfile.yml。
-I --interval string 5s 使用 --watch 设置不同的观察间隔,默认为 5 秒。 这个字符串应该是一个有效的 Go Duration
-l --list bool false 列出当前文件的全部 task 及对应描述。
-a --list-all bool false 列出无论有没有描述的所有 task。
--sort string default Changes the order of the tasks when listed.
default - Alphanumeric with root tasks first
alphanumeric - Alphanumeric
none - No sorting (As they appear in the Taskfile)
--json bool false 查看 JSON 输出
-o --output string 在 Taskfile 中设置默认值或 intervealed 设置输出样式:[interleaved/group/prefixed]。
--output-group-begin string 在任务组输出前打印的消息模板。
--output-group-end string 在任务组输出后打印的消息模板。
--output-group-error-only bool false 在退出码为 0 时忽略命令输出。
-p --parallel bool false 并行执行命令行上提供的 task。
-s --silent bool false 禁用回显。
-y --yes bool false Assume "yes" as answer to all prompts.
--status bool false 如果任何给定 task 不是最新的,则以非 0 退出码退出。
--summary bool false 显示有关 task 的摘要。
-t --taskfile string Taskfile.ymlTaskfile.yaml
-v --verbose bool false 启用详细模式。
--version bool false 显示 Task 版本。
-w --watch bool false 启用给定 task 的观察器。

退出码

Task 有时会以特定的退出代码退出。 These codes are split into three groups with the following ranges:

  • General errors (0-99)
  • Taskfile errors (100-199)
  • Task errors (200-299)

可以在下面找到退出代码及其描述的完整列表:

代码 描述
0 成功
1 出现未知错误
100 找不到 Taskfile
101 尝试初始化一个 Taskfile 时已经存在
102 Taskfile 无效或无法解析
103 A remote Taskfile could not be downloaded
104 A remote Taskfile was not trusted by the user
105 A remote Taskfile was could not be fetched securely
106 No cache was found for a remote Taskfile in offline mode
107 No schema version was defined in the Taskfile
200 找不到指定的 task
201 在 task 中执行命令时出错
202 用户试图调用内部 task
203 有多个具有相同名称或别名的 task
204 一个 task 被调用了太多次
205 操作被用户取消
206 由于缺少所需变量,任务未执行

这些代码也可以在代码库的 errors/errors.go 文件中找到。

:::info

当使用 -x/--exit-code 标志运行 Task 时,任何失败命令的退出代码都将传递给用户。

:::

JSON 输出

--json 标志与 --list--list-all 标志结合使用时,将输出具有以下结构的 JSON 对象:

{
  "tasks": [
    {
      "name": "",
      "desc": "",
      "summary": "",
      "up_to_date": false,
      "location": {
        "line": 54,
        "column": 3,
        "taskfile": "/path/to/Taskfile.yml"
      }
    }
    // ...
  ],
  "location": "/path/to/Taskfile.yml"
}

特殊变量

模板系统上有一些可用的特殊变量:

变量 描述
CLI_ARGS 当通过 CLI 调用 Task 时,传递包含在 -- 之后的所有额外参数。
CLI_FORCE A boolean containing whether the --force or --force-all flags were set.
TASK 当前 task 的名称。
ROOT_DIR 根 Taskfile 的绝对路径。
TASKFILE_DIR 包含 Taskfile 的绝对路径
USER_WORKING_DIR 调用 task 的目录的绝对路径。
CHECKSUM sources 中列出的文件的 checksum。 仅在 status 参数中可用,并且如果 method 设置为 checksum
TIMESTAMP The date object of the greatest timestamp of the files listed in sources. 仅在 status 参数中可用,并且如果 method 设置为 timestamp
TASK_VERSION Task 的当前版本。
ITEM The value of the current iteration when using the for property. Can be changed to a different variable name using as:.

环境变量

Some environment variables can be overridden to adjust Task behavior.

ENV 默认 描述
TASK_TEMP_DIR .task 临时目录的位置。 可以相对于项目比如 tmp/task 或绝对如 /tmp/.task~/.task
TASK_COLOR_RESET 0 用于白色的颜色。
TASK_COLOR_BLUE 34 用于蓝色的颜色。
TASK_COLOR_GREEN 32 用于绿色的颜色。
TASK_COLOR_CYAN 36 用于青色的颜色。
TASK_COLOR_YELLOW 33 用于黄色的颜色。
TASK_COLOR_MAGENTA 35 用于洋红色的颜色。
TASK_COLOR_RED 31 用于红色的颜色。
FORCE_COLOR 强制使用颜色输出。

Taskfile Schema

属性 类型 默认 描述
version string Taskfile 的版本。 当前版本是 3
output string interleaved 输出模式。 可用选项: interleavedgroupprefixed
method string checksum Taskfile 中的默认方法。 Can be overridden in a task by task basis. 可用选项:checksumtimestampnone
includes map[string]Include 要包含的其他 Taskfile。
vars map[string]Variable 一组全局变量。
env map[string]Variable 一组全局环境变量。
tasks map[string]Task 一组 task 定义。
silent bool false 此 Taskfile 的默认“silent”选项。 If false, can be overridden with true in a task by task basis.
dotenv []string 要解析的 .env 文件路径列表。
run string always Taskfile 中默认的 'run' 选项。 可用选项: alwaysoncewhen_changed
interval string 5s 设置 --watch 模式下的观察时间,默认 5 秒。 这个字符串应该是一个有效的 Go Duration
set []string 内置 set 指定选项。
shopt []string 内置 shopt 指定选项。

Include

属性 类型 默认 描述
taskfile string 要包含的 Taskfile 或目录的路径。 如果是目录,Task 将在该目录中查找名为 Taskfile.ymlTaskfile.yaml 的文件。 如果是相对路径,则相对于包含 Taskfile 的目录进行解析。
dir string Taskfile 文件父目录 运行时包含的 task 的工作目录。
optional bool false 设置为 true 时, 文件不存在也不会报错
internal bool false 停止在命令行上调用包含的 Taskfile 中的任何 task。 当与 --list 一起使用时,这些命令也将从输出中省略。
aliases []string 包含的 Taskfile 的命名空间的替代名称。
vars map[string]Variable 一组应用于包含的 Taskfile 的变量。

:::info

像下面这样只赋值一个字符串,和把这个值设置到 taskfile 属性是一样的。

includes:
  foo: ./path

:::

Variable

属性 类型 默认 描述
itself string 将设置为变量的静态值。
sh string 一个 shell 命令。 输出 (STDOUT) 将分配给变量。

:::info

静态和动态变量有不同的语法,如下所示:

vars:
  STATIC: static
  DYNAMIC:
    sh: echo "dynamic"

:::

Task

属性 类型 默认 描述
cmds []Command 要执行的 shell 命令列表。
deps []Dependency 此 task 的依赖项列表。 此处定义的 task 将在此 task 之前并行运行。
label string 运行 task 时覆盖输出中的 task 名称。 支持变量。
desc string task 的简短描述。 这在调用 task --list 时显示。
prompt string A prompt that will be presented before a task is run. Declining will cancel running the current and any subsequent tasks.
summary string task 的较长描述。 这在调用 task --summary [task] 时显示。
aliases []string 可以调用 task 的别名列表。
sources []string 运行此 task 之前要检查的源列表。 与 checksumtimestamp 方法相关。 可以是文件路径或星号。
generates []string 此 task 要生成的文件列表。 与 timestamp 方法相关。 可以是文件路径或星号。
status []string 用于检查此 task 是否应运行的命令列表。 否则跳过该 task。 这个方法会覆盖 methodsourcesgenerates
requires []string A list of variables which should be set if this task is to run, if any of these variables are unset the task will error and not run.
preconditions []Precondition 用于检查此 task 是否应运行的命令列表。 如果不满足条件,task 将出错。
requires Requires A list of required variables which should be set if this task is to run, if any variables listed are unset the task will error and not run.
dir string 此 task 应运行的目录。 默认为当前工作目录。
vars map[string]Variable 可在 task 中使用的一组变量。
env map[string]Variable 一组可用于 shell 命令的环境变量。
dotenv []string 要解析的 .env 文件路径列表。
silent bool false 从输出中隐藏 task 名称和命令。 命令的输出仍将重定向到 STDOUTSTDERR。 当与 --list 标志结合使用时,task 描述将被隐藏。
interactive bool false 告诉 task 该命令是交互式的。
internal bool false 停止在命令行上调用 task。 当与 --list 一起使用时,它也会从输出中省略。
method string checksum 定义用于检查 task 是最新的方法。 timestamp 将比较 sources 的时间戳并生成文件。 checksum 将检查 checksum(您可能想忽略 .gitignore 文件中的 .task 文件夹)。 none 跳过任何验证并始终运行 task。
prefix string 定义一个字符串作为并行运行 task 输出的前缀。 仅在输出模式是 prefixed 时使用。
ignore_error bool false 如果执行命令时发生错误,则继续执行。
run string Taskfile 中全局声明的值或 always 指定如果多次调用该 task 是否应再次运行。 可用选项:alwaysoncewhen_changed
platforms []string 所有平台 指定应在哪些平台上运行 task。 允许使用 有效的 GOOS 和 GOARCH 值。 否则将跳过 task。
set []string 内置 set 指定选项。
shopt []string 内置 shopt 指定选项。

:::info

这些替代语法可用。 他们会将给定值设置为 cmds,其他所有内容都将设置为其默认值:

tasks:
  foo: echo "foo"

  foobar:
    - echo "foo"
    - echo "bar"

  baz:
    cmd: echo "baz"

:::

Command

属性 类型 默认 描述
cmd string 要执行的 shell 命令
task string 执行另一个 task,而不执行命令。 不能与 cmd 同时设置。
for For Runs the command once for each given value.
silent bool false 跳过此命令的一些输出。 请注意,命令的 STDOUT 和 STDERR 仍将被重定向。
vars map[string]Variable 要传递给引用 task 的可选附加变量。 仅在设置 task 而不是 cmd 时相关。
ignore_error bool false 执行命令的时候忽略错误,继续执行
defer string cmd 的替代方法,但安排命令在此 task 结束时执行,而不是立即执行。 不能与 cmd 一同使用。
platforms []string 所有平台 指定应在哪些平台上运行该命令。 允许使用 有效的 GOOS 和 GOARCH 值。 否则将跳过命令。
set []string 内置 set 指定选项。
shopt []string 内置 shopt 指定选项。

:::info

如果以字符串形式给出,该值将分配给 cmd

tasks:
  foo:
    cmds:
      - echo "foo"
      - echo "bar"

:::

Dependency

属性 类型 默认 描述
task string 要作为依赖项执行的 task。
vars map[string]Variable 要传递给此 task 的可选附加变量。
silent bool false 从输出中隐藏 task 名称和命令。 命令的输出仍将重定向到 STDOUTSTDERR

:::tip

如果你不想设置额外的变量,将依赖关系声明为一个字符串列表就足够了(它们将被分配给 task)。

tasks:
  foo:
    deps: [foo, bar]

:::

For

The for parameter can be defined as a string, a list of strings or a map. If it is defined as a string, you can give it any of the following values:

  • source - Will run the command for each source file defined on the task. (Glob patterns will be resolved, so *.go will run for every Go file that matches).

If it is defined as a list of strings, the command will be run for each value.

Finally, the for parameter can be defined as a map when you want to use a variable to define the values to loop over:

属性 类型 默认 描述
var string The name of the variable to use as an input.
split string (any whitespace) What string the variable should be split on.
as string ITEM The name of the iterator variable.

Precondition

Attribute Type Default Description
sh string 要执行的命令。 如果返回非零退出码, task 将在不执行其命令的情况下出错。
msg string 如果不满足先决条件,则打印可选消息。

:::tip

如果你不想设置不同的消息,你可以像这样声明一个前提条件,值将被分配给 sh

tasks:
  foo:
    precondition: test -f Taskfile.yml

:::

Requires

Attribute Type Default Description
vars []string List of variable or environment variable names that must be set if this task is to execute and run