Aller au contenu

Task (go-task) - Cheatsheet Task Runner Moderne

Task (go-task) - Cheatsheet Task Runner Moderne

Task (a.k.a. go-task) est un task runner et outil de build qui vise à être une alternative plus simple à Make. Tu définis les tâches dans un Taskfile.yml simple — avec dépendances, variables, includes et vérifications à jour — et les exécutes avec task <name>. C”est écrit en Go et livré comme un binaire unique indépendant, avec un comportement multiplateforme et file-watching intégré. C”est un excellent choix quand ton équipe préfère YAML à la syntaxe de Make.

Installation

PlateformeCommande
Scriptsh -c "$(curl -sSL https://taskfile.dev/install.sh)"
macOS/Linux (Homebrew)brew install go-task
Arch Linuxsudo pacman -S go-task
Go installgo install github.com/go-task/task/v3/cmd/task@latest
Windows (Scoop)scoop install task
Vérificationtask --version

Un Taskfile Basique

# Taskfile.yml
version: '3'

vars:
  BINARY: myapp

tasks:
  build:
    desc: Build the binary
    cmds:
      - go build -o {{.BINARY}} ./cmd/app

  test:
    desc: Run tests
    cmds:
      - go test ./...

  ci:
    desc: Lint, test, build
    deps: [test]
    cmds:
      - task: build

Exécuter les Tâches

CommandeDescription
taskExécuter la tâche default
task buildExécuter une tâche nommée
task test buildExécuter plusieurs tâches dans l”ordre
task --list (-l)Lister les tâches avec descriptions
task --list-allLister toutes les tâches (incl. sans description)
task --summary buildAfficher le détail d”une tâche
task VAR=value buildTransmettre une variable
task -- arg1 arg2Transmettre les args CLI à la tâche ({{.CLI_ARGS}})

Dépendances et Ordonnancement

CléComportement
deps: [a, b]Exécuter a et b (en parallèle) avant cette tâche
cmds: [{task: x}]Appeler une autre tâche comme une étape (séquentielle)
Parallélisme depsLes dépendances s”exécutent concurremment par défaut
--parallelExécuter les tâches données en parallèle

Vérifications À Jour (Ignorer le Travail Non Nécessaire)

tasks:
  build:
    sources:
      - "**/*.go"
    generates:
      - myapp
    cmds:
      - go build -o myapp ./cmd/app
CléEffet
sourcesEntrées à fingerprinter
generatesSorties attendues
`method: checksumtimestamp
status: [ ... ]Vérifications shell personnalisées à jour

Si les sources sont inchangées, Task ignore la commande.

Variables et Templating

FonctionnalitéExemple
Vars tâche/globalvars: { NAME: value }
Vars d”envenv: { CGO_ENABLED: "0" }
Dotenvdotenv: [''.env'']
Templating{{.NAME}}, {{.CLI_ARGS}}, foncs de template Go
Vars dynamiquessh: pour calculer une var à partir d”une commande

Includes et Watching

FonctionnalitéComment
Includesincludes: { docs: ./docs/Taskfile.yml }task docs:build
NamespacingLes tâches incluses s”appellent namespace:task
Mode watchtask --watch build (réexécuter sur changements source)
-wForme courte de --watch

Flux de Travail Courants

# Découvrir ce qu''un projet peut faire
task --list

# Exécuter CI localement exactement comme le pipeline
task ci

# Itérer : reconstruire sur chaque changement source
task --watch build

# Passer les arguments
task test -- -run TestLogin

Task vs Make vs just

AspectTaskMakejust
SyntaxeYAMLMakefilerecettes just
LangageGo (binaire unique)C (omniprésent)Rust
Vérifications à jourOui (sources/generates)Oui (timestamps)Non (runner de commande)
File-watchingIntégré (--watch)NonNon (associer avec watchexec)
Meilleur pourFans YAML, multiplateformeGraphiques de build classiquesSimple command running

Voir aussi just pour une alternative command-runner et watchexec pour l”observation de fichiers autonome.

Ressources