ホームページ  >  記事  >  バックエンド開発  >  Makefile から Taskfile に切り替えた理由

Makefile から Taskfile に切り替えた理由

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-06 05:05:03302ブラウズ

Why I Switched from Makefile to Taskfile

Unsplash の Kelly Sikkema による写真

導入

ソフトウェア プロジェクトには、コードの構築、テスト、デプロイなど、いくつかのフェーズが含まれます。
たとえば、Go ソース コードをコンパイルすると実行可能ファイルが生成されますが、フロントエンド フレームワークは HTML、CSS、および JavaScript ファイルにコンパイルされます。
変更をマージしたり、新しいバージョンをリリースしたりする前に、テストを行うことが重要です。多くの場合、展開スクリプトはソフトウェアを運用環境に出荷します。
各フェーズには異なるツールが必要で、通常はさまざまなフラグやパラメータを備えたコマンドライン ユーティリティが必要です。
自動化ツールはこれらのプロセスを簡素化し、日常のワークフローの効率を高めます。

メイクファイル

Makefile は、ソフトウェア プロジェクトのワークフローを自動化する強力なツールです。当初は C プログラム用に開発されましたが、現在では Web サイトの生成やデータ処理などのさまざまなタスクをサポートしています。

Makefile には、make ユーティリティがプログラムやファイルを構築または保守するためのディレクティブが含まれています。タスクとその依存関係を定義し、効率的で再現可能なビルドを保証します。

読者はこの概念に精通していると想定しているため、このブログ投稿では Makefile については詳しく説明しません。そうでない場合は、インターネット上にたくさんの情報があります (たとえば、このチュートリアルや wikipedia ページなど)。

Makefile の利点:

  • make ユーティリティと統合されており、ほとんどの Linux/MacOS システムで利用できます。
  • 50年近い歴史を持つ老舗ツール

これらは、Makefile が持つと私が考える 主な利点です。ただし、Makefile には制限があり、特にその構文は複雑なタスクの場合には煩雑になる可能性があります。

切り替えた理由

私のプロジェクトの 1 つでは、フロントエンド/バックエンド サービスの実行やデータベースの移行などのタスクに Makefile を使用しました。移行タスクの例を次に示します:

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

デフォルトで .env ファイルから環境変数をロードしたいのですが、ENV_FILE=.env.production によるオーバーライドを許可したいと考えていました。 Makefile の構文と機能しない解決策に苦労した後、代替案を探しました。

タスクファイルの紹介

Taskfile は、YAML 構文を使用してタスクを定義する Go ベースのタスク ランナーです。コードのビルド、テスト、デプロイなどの反復的なタスクを自動化することで、プロジェクトのワークフローを簡素化します。

タスクファイルの利点:

  • 読みやすい YAML 構文: Makefile よりも理解しやすい。
  • 単一バイナリ: Go ランタイム以外の依存関係はありません。
  • クロスプラットフォームのサポート: Linux、macOS、Windows で動作します。

タスクファイルを使用して問題を解決した方法は次のとおりです:

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

Taskfile の直感的な API により、機能的で読みやすいソリューションを迅速に実装できました。

まとめ

適切なツールを選択すると、生産性に大きな影響を与える可能性があります。 Makefile は当初その目的を果たしましたが、Taskfile は私のニーズを満たすより洗練されたソリューションを提供してくれました。移行には 30 分もかからず、ビルド プロセスが大幅に簡素化されました。

使いやすいビルド ツールをお探しの場合は、Taskfile を試してみることを検討してください。

以上がMakefile から Taskfile に切り替えた理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。