تخطَّ إلى المحتوى

Task (go-task) - مشغل مهام حديث

Task (go-task) - مشغل مهام حديث

Task (aka go-task) هو مشغل مهام وأداة بناء تهدف إلى أن تكون بديل Make أبسط. تحدد المهام في Taskfile.yml — مع التبعيات والمتغيرات والشمول وفحوصات محدثة — وتشغيلها مع task <name>. إنها مكتوبة في Go وتُشحن كملف ثنائي واحد خالٍ من التبعيات مع سلوك متعدد المنصات ومراقبة ملفات مدمجة. إنها خيار قوي عندما يفضل فريقك YAML على بناء جملة Make.

التثبيت

المنصةالأمر
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
التحقق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

تشغيل المهام

الأمرالوصف
taskشغّل المهمة default
task buildشغّل مهمة مسماة
task test buildشغّل عدة مهام بالترتيب
task --list (-l)قائمة المهام مع الأوصاف
task --list-allقائمة جميع المهام (incl. بدون وصف)
task --summary buildاعرض تفاصيل المهمة
task VAR=value buildمرّر متغيرًا
task -- arg1 arg2مرّر وسيطات CLI إلى المهمة ({{.CLI_ARGS}})

التبعيات والترتيب

المفتاحالسلوك
deps: [a, b]شغّل a و b (بالتوازي) قبل هذه المهمة
cmds: [{task: x}]استدعِ مهمة أخرى كخطوة (متسلسل)
deps parallelismالتبعيات تعمل بالتوازي بشكل افتراضي
--parallelشغّل المهام المعطاة بالتوازي

فحوصات محدثة (تخطّ العمل غير الضروري)

tasks:
  build:
    sources:
      - "**/*.go"
    generates:
      - myapp
    cmds:
      - go build -o myapp ./cmd/app
المفتاحالتأثير
sourcesالمدخلات لحساب بصمة
generatesالنتائج المتوقعة
`method: checksumtimestamp
status: [ ... ]فحوصات shell مخصصة للحالة

إذا لم تتغيّر المصادر Task تتخطّ الأمر.

المتغيرات والقوالب

الميزةمثال
متغيرات المهمة/العامةvars: { NAME: value }
متغيرات Envenv: { CGO_ENABLED: "0" }
Dotenvdotenv: ['.env']
القوالب{{.NAME}} و {{.CLI_ARGS}} وتوابع قوالب Go
متغيرات ديناميكيةsh: لحساب متغير من أمر

الشمول والمراقبة

الميزةالكيفية
Includesincludes: { docs: ./docs/Taskfile.yml }task docs:build
Namespacingالمهام المشمولة تُستدعى namespace:task
وضع المراقبةtask --watch build (إعادة تشغيل على تغيير المصدر)
-wشكل قصير من --watch

سير العمل الشائع

# اكتشف ما يمكن للمشروع أن يفعله
task --list

# شغّل CI محليًا بالضبط كما يفعل الخط الأنابيب
task ci

# كرّر: أعد البناء عند كل تغيير المصدر
task --watch build

# مرّر المحتجات
task test -- -run TestLogin

Task مقابل Make مقابل just

الجانبTaskMakejust
البناء جملةYAMLMakefilejust recipes
اللغةGo (ملف ثنائي واحد)C (منتشر في كل مكان)Rust
فحوصات محدثةنعم (sources/generates)نعم (الطوابع الزمنية)لا (مشغل أوامر)
مراقبة الملفاتمدمجة (--watch)لالا (اقرن مع watchexec)
الأفضل لـمعجبو YAML متعدد المنصاتبناء الرسوم البيانية الكلاسيكيةتشغيل الأوامر البسيط

انظر أيضًا إلى just للحصول على بديل مشغل أوامر و watchexec لمراقبة ملفات منفصلة.

الموارس