Makefile に次のものが含まれている Web アプリで作業しています。
dist/index.html: src/templates/index.html
@bin/insert-scripts $< --output $@
bin/insert-scripts<--scripts-->
は、提供されたファイルを次のいずれかに置き換えます。
- $ENV が「development」の場合は、多数のスクリプト タグ (jQuery、Underscore など)、または
- $ENV が "production" の場合、単一のスクリプト タグ (連結された縮小ファイルを指す)。
問題は、あるモード (「開発」など) で dist/index.html をビルドし、依存関係に触れずに別のモードで再度ビルドすると、make は何もする必要がないと言うことです。私ができるようにしたいのは、$ENV を dist/index.html の依存関係にすることです。
dist/index.html: src/templates/index.html $ENV
@bin/insert-scripts $< --output $@
もちろん、これはうまくいかないので、「開発」または「生産」のいずれかを含む ENV という名前のファイルを用意することを検討しました。このファイルは依存関係になります。
dist/index.html: src/templates/index.html ENV
@bin/insert-scripts $< --output $@
環境変数を設定するのではなく、ENV ファイルの内容を設定します。これは少し不格好に思えますが、少なくとも依存関係ツリーを正確に表しています。
この状況を処理する最善の方法は何ですか?