Unsplash の Kelly Sikkema による写真
ソフトウェア プロジェクトには、コードの構築、テスト、デプロイなど、いくつかのフェーズが含まれます。
たとえば、Go ソース コードをコンパイルすると実行可能ファイルが生成されますが、フロントエンド フレームワークは HTML、CSS、および JavaScript ファイルにコンパイルされます。
変更をマージしたり、新しいバージョンをリリースしたりする前に、テストを行うことが重要です。多くの場合、展開スクリプトはソフトウェアを運用環境に出荷します。
各フェーズには異なるツールが必要で、通常はさまざまなフラグやパラメータを備えたコマンドライン ユーティリティが必要です。
自動化ツールはこれらのプロセスを簡素化し、日常のワークフローの効率を高めます。
Makefile は、ソフトウェア プロジェクトのワークフローを自動化する強力なツールです。当初は C プログラム用に開発されましたが、現在では Web サイトの生成やデータ処理などのさまざまなタスクをサポートしています。
Makefile には、make ユーティリティがプログラムやファイルを構築または保守するためのディレクティブが含まれています。タスクとその依存関係を定義し、効率的で再現可能なビルドを保証します。
読者はこの概念に精通していると想定しているため、このブログ投稿では Makefile については詳しく説明しません。そうでない場合は、インターネット上にたくさんの情報があります (たとえば、このチュートリアルや wikipedia ページなど)。
Makefile の利点:
これらは、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 ベースのタスク ランナーです。コードのビルド、テスト、デプロイなどの反復的なタスクを自動化することで、プロジェクトのワークフローを簡素化します。
タスクファイルの利点:
タスクファイルを使用して問題を解決した方法は次のとおりです:
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 サイトの他の関連記事を参照してください。