Skip to content
Latchkey

just vs make:command runner vs build system

just はプロジェクトのタスクを保存して実行することに焦点を当てた command runner です。make は build system で、その中核となる機能は依存関係に基づいてファイルを再ビルドすることです。

両者は似て見えます(名前付きレシピのファイル)が、異なる問題を解決します。make はファイルのタイムスタンプを追跡して変更されたものだけを再ビルドします。just はあえてそれを捨て、人間工学的でクロスプラットフォームなタスク実行に焦点を当てています。

justmake
主な目的名前付きのプロジェクトコマンドを実行依存関係からファイルを build
ファイルの依存関係の追跡なし(設計上)あり(タイムスタンプベース)
構文の落とし穴寛容、明確なエラータブ、.PHONY、shell の癖
レシピへの引数第一級扱いにくい
クロスプラットフォーム一貫しているmake/shell により異なる

just が優れている点

「プロジェクトのタスクを実行する」(lint、test、build、deploy)用途では just の方が快適です。レシピは引数をきれいに受け取り、エラーは明確で、タブ対スペースの罠も意図しないインクリメンタルな挙動もなく、プラットフォームをまたいで一貫して振る舞います。command runner として目的に特化して作られています。

make が優れている点

本当にインクリメンタルな build が必要な場合(変更されたソースだけをコンパイルし、入力が変わったら出力を再生成する)、make のタイムスタンプベースの依存グラフこそが要点であり、just はそれを置き換えません。make はほとんどどこにでもインストールされているため、追加のプロビジョニングも不要です。

CI では

「build」のステップが実際にはタスクのエイリアスなら、just の方がすっきりした pipeline になります。インクリメンタルな再ビルドに依存しているなら、make(または本物の build system)を残しましょう。just のプロビジョニングはインストールのステップを 1 つ増やします。make は通常すでに存在しています。

結論

プロジェクトのタスク向けに人間工学的な command runner が欲しいなら just を、ファイルベースの本物のインクリメンタルな build やインストール不要の普遍性が必要なら make を使いましょう。両者は直接の代替品ではありません。

関連ガイド