コンテンツにスキップ

Task (go-task) - 最新タスクランナーチートシート

Task (go-task) - 最新タスクランナーチートシート

Task (別名 go-task) はタスクランナーおよびビルドツールで、よりシンプルなMake代替品を目的としています。YAML Taskfile.yml でタスクを定義 — 依存性、変数、インクルード、最新チェック — し、task <name> で実行します。Go で書かれ、単一の依存性のないバイナリとして出荷され、クロスプラットフォームの動作と組み込みファイルウォッチングを備えています。チームがMakの構文を超えてYAMLを好む場合は、強力な選択肢です。

インストール

プラットフォームコマンド
スクリプトsh -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
確認task --version

基本的な Taskfile

# 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

タスク実行

コマンド説明
taskdefault タスクを実行
task build名前付きタスクを実行
task test build複数のタスクを順番に実行
task --list (-l)説明付きでタスクをリスト
task --list-allすべてのタスク (説明なし含む) をリスト
task --summary buildタスク詳細を表示
task VAR=value build変数を渡す
task -- arg1 arg2CLI引数をタスクに転送 ({{.CLI_ARGS}})

依存性 & 順序付け

キー動作
deps: [a, b]このタスク前にa と b を実行 (並行)
cmds: [{task: x}]ステップとして別のタスクを呼び出す (順序付け)
deps 並列性デフォルトで依存性は並行実行
--parallel与えられたタスクを並行実行

最新チェック (不要な作業をスキップ)

tasks:
  build:
    sources:
      - "**/*.go"
    generates:
      - myapp
    cmds:
      - go build -o myapp ./cmd/app
キー効果
sourcesフィンガープリント用の入力
generates予期される出力
`method: checksumtimestamp
status: [ ... ]最新用のカスタムシェルチェック

ソースが変わらない場合、Task はコマンドをスキップします。

変数 & テンプレート

機能
タスク/グローバル変数vars: { NAME: value }
環境変数env: { CGO_ENABLED: "0" }
Dotenvdotenv: ['.env']
テンプレート{{.NAME}}{{.CLI_ARGS}}、Go テンプレート関数
動的変数sh: 計算用コマンド

インクルード & ウォッチング

機能方法
インクルードincludes: { docs: ./docs/Taskfile.yml }task docs:build
名前空間インクルードされたタスクは namespace:task と呼ばれる
ウォッチモードtask --watch build (ソース変更時に再実行)
-w--watch の短形式

一般的なワークフロー

# プロジェクトが何ができるかを発見
task --list

# CI パイプラインとして正確にローカルで実行
task ci

# 反復:ソース変更ごとにリビルド
task --watch build

# 引数をパススルー
task test -- -run TestLogin

Task vs Make vs just

側面TaskMakejust
構文YAMLMakefilejust レシピ
言語Go (単一バイナリ)C (ユビキタス)Rust
最新チェックはい (sources/generates)はい (タイムスタンプ)いいえ (コマンドランナー)
ファイルウォッチング組み込み (--watch)いいえいいえ (watchexecとペア)
最適用途YAMLファン、クロスプラットフォーム古典的なビルドグラフシンプルなコマンド実行

just をコマンドランナー代替案、watchexec をスタンドアロンファイルウォッチングで参照。

リソース