Heim  >  Artikel  >  Backend-Entwicklung  >  Warum ich von Makefile zu Taskfile gewechselt bin

Warum ich von Makefile zu Taskfile gewechselt bin

Patricia Arquette
Patricia ArquetteOriginal
2024-11-06 05:05:03216Durchsuche

Why I Switched from Makefile to Taskfile

Foto von Kelly Sikkema auf Unsplash

Einführung

Softwareprojekte umfassen mehrere Phasen, darunter das Erstellen, Testen und Bereitstellen von Code.
Beispielsweise führt das Kompilieren des Go-Quellcodes zu einer ausführbaren Datei, während Frontend-Frameworks in HTML-, CSS- und JavaScript-Dateien kompiliert werden.
Tests sind von entscheidender Bedeutung, bevor Änderungen zusammengeführt oder neue Versionen veröffentlicht werden. Bereitstellungsskripte liefern häufig Software an die Produktion.
Jede Phase erfordert unterschiedliche Tools, typischerweise Befehlszeilen-Dienstprogramme mit verschiedenen Flags und Parametern.
Automatisierungstools vereinfachen diese Prozesse und steigern die Effizienz in den täglichen Arbeitsabläufen.

Makefile

Makefiles sind leistungsstarke Tools, die Softwareprojekt-Workflows automatisieren. Ursprünglich für C-Programme entwickelt, unterstützen sie mittlerweile vielfältige Aufgaben wie Website-Erstellung und Datenverarbeitung.

Ein Makefile enthält Anweisungen für das Make-Dienstprogramm zum Erstellen oder Verwalten von Programmen und Dateien. Es definiert Aufgaben und ihre Abhängigkeiten und sorgt so für effiziente und reproduzierbare Builds.

Ich werde in diesem Blogbeitrag nicht näher auf Makefiles eingehen, da ich davon ausgehe, dass der Leser mit dem Konzept vertraut ist. Wenn nicht, gibt es zahlreiche Informationen im Internet (wie zum Beispiel dieses Tutorial oder die Wikipedia-Seite).

Vorteile von Makefile:

  • In das Make-Dienstprogramm integriert, verfügbar auf den meisten Linux-/MacOS-Systemen.
  • Ein bewährtes Werkzeug mit einer fast 50-jährigen Geschichte.

Das sind meiner Meinung nach die Hauptvorteile von Makefile. Allerdings haben Makefiles Einschränkungen, insbesondere ihre Syntax, die bei komplexen Aufgaben umständlich sein kann.

Warum ich gewechselt habe

In einem meiner Projekte habe ich ein Makefile für Aufgaben wie das Ausführen von Frontend-/Backend-Diensten und Datenbankmigrationen verwendet. Hier ist ein Beispiel für eine Migrationsaufgabe:

migrate-up:
    GOOSE_DRIVER=postgres GOOSE_DBSTRING="user=app host=localhost port=5432 dbname=my-app sslmode=disable user=app" \
    goose -dir database/migrations up

Ich wollte Umgebungsvariablen standardmäßig aus einer .env-Datei laden, aber Überschreibungen mit ENV_FILE=.env.produktion zulassen. Nachdem ich mit der Makefile-Syntax und nicht funktionierenden Lösungen zu kämpfen hatte, suchte ich nach Alternativen.

Einführung in Taskfile

Taskfile ist ein Go-basierter Task-Runner, der YAML-Syntax zum Definieren von Aufgaben verwendet. Es vereinfacht Projektabläufe durch die Automatisierung wiederkehrender Aufgaben wie Erstellen, Testen und Bereitstellen von Code.

Vorteile von Taskfile:

  • Lesbare YAML-Syntax:Einfacher zu verstehen als Makefiles.
  • Einzelne Binärdatei:Keine Abhängigkeiten über die Go-Laufzeit hinaus.
  • Plattformübergreifende Unterstützung:Funktioniert unter Linux, macOS und Windows.

So habe ich mein Problem mit Taskfile gelöst:

version: '3'
dotenv:
  - '.env'

tasks:
  migrate-up:
    cmds:
      - goose -dir database/migrations up

  migrate-up-prod:
    dotenv:
      - .env.production
    cmds:
      - echo executing DB migration on PRODUCTION ..
      - sleep 2 # allow time to cancel
      - goose -dir database/migrations up

Mit der intuitiven API von Taskfile konnte ich schnell eine Lösung implementieren, die sowohl funktional als auch lesbar war.

Zusammenfassung

Die Wahl des richtigen Werkzeugs kann sich erheblich auf die Produktivität auswirken. Während Makefile anfangs seinen Zweck erfüllte, bot Taskfile eine elegantere Lösung für meine Bedürfnisse. Der Übergang dauerte weniger als 30 Minuten und vereinfachte meinen Build-Prozess erheblich.

Wenn Sie auf der Suche nach einem benutzerfreundlichen Build-Tool sind, sollten Sie Taskfile ausprobieren.

Das obige ist der detaillierte Inhalt vonWarum ich von Makefile zu Taskfile gewechselt bin. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn