Skip to content

风格指南

本文是 Taskfile.yml 文件的官方风格指南,提供保持 Taskfile 整洁且易于其他用户理解的基本指导原则。

本指南包含通用规范,但并非必须严格遵循。您可以根据需要或个人偏好自由调整。欢迎对本指南提出改进建议!请通过提交 issue 或创建 pull request 参与贡献。

采用建议的主章节排序

yaml
version:
includes:
# 可选配置项 (output, silent, method, run 等)
vars:
env: # 后接或被 dotenv 替代
tasks:

使用两个空格进行缩进

这是 YAML 文件最通用的规范,Task 也遵循此约定。

yaml
# 错误示例
tasks:
    foo:
        cmds:
            - echo 'foo'


# 正确示例
tasks:
  foo:
    cmds:
      - echo 'foo'

使用空行分隔主章节

yaml
# 错误示例
version: '3'
includes:
  docker: ./docker/Taskfile.yml
output: prefixed
vars:
  FOO: bar
env:
  BAR: baz
tasks:
  # ...


# 正确示例
version: '3'

includes:
  docker: ./docker/Taskfile.yml

output: prefixed

vars:
  FOO: bar

env:
  BAR: baz

tasks:
  # ...

使用空行分隔任务

yaml
# 错误示例
version: '3'

tasks:
  foo:
    cmds:
      - echo 'foo'
  bar:
    cmds:
      - echo 'bar'
  baz:
    cmds:
      - echo 'baz'


# 正确示例
version: '3'

tasks:
  foo:
    cmds:
      - echo 'foo'

  bar:
    cmds:
      - echo 'bar'

  baz:
    cmds:
      - echo 'baz'

变量名统一使用大写字母

yaml
# 错误示例
version: '3'

vars:
  binary_name: myapp

tasks:
  build:
    cmds:
      - go build -o {{.binary_name}} .


# 正确示例
version: '3'

vars:
  BINARY_NAME: myapp

tasks:
  build:
    cmds:
      - go build -o {{.BINARY_NAME}} .

模板变量使用时避免添加空格

yaml
# 错误示例
version: '3'

tasks:
  greet:
    cmds:
      - echo '{{ .MESSAGE }}'


# 正确示例
version: '3'

tasks:
  greet:
    cmds:
      - echo '{{.MESSAGE}}'

此约定在 Go 语言模板中也广泛使用。

任务名称采用短横线命名法

yaml
# 错误示例
version: '3'

tasks:
  do_something_fancy:
    cmds:
      - echo 'Do something'


# 正确示例
version: '3'

tasks:
  do-something-fancy:
    cmds:
      - echo 'Do something'

使用冒号分隔任务命名空间与名称

yaml
# 正确示例
version: '3'

tasks:
  docker:build:
    cmds:
      - docker ...

  docker:run:
    cmds:
      - docker-compose ...

引入的 Taskfile 会自动采用此格式。

优先使用外部脚本而非多行命令

yaml
# 错误示例
version: '3'

tasks:
  build:
    cmds:
      - |
        for i in $(seq 1 10); do
          echo $i
          echo "some other complex logic"
        done'

# 正确示例
version: '3'

tasks:
  build:
    cmds:
      - ./scripts/my_complex_script.sh