私は、私のjavascriptファイルの資産指紋を作成するメイクファイルを作成しようとしています。そうすれば、私は無限のキャッシュの有効期限を持つことができます。Makefile target with md5
私にはsrc /というフォルダがあります。私は、そこにjavascriptファイルを取得し、app.6b3hj24278b.js
に名前を置きたいです。だから私はそのような目標を持つことができます。
次に、index.html内のapp.jsのインスタンスをgrepを使用してフィンガープリントされたファイルに置き換えることができると考えていました。
ここに私の全体のメイクは、特に私はJS_TARGETS
が名前にMD5を追加作成しようとしていた
#Variables
APP=application
JS_SRC=src/boot.js
JS_TARGETS =$(patsubst %.js,$(md5sum $JS_SRC),$JS_SRC)
HTMLSRC=index.html
OUTDIR=dist/
.PHONY: all clean
all: html js
js: $(JS_TARGETS)
cp $(js_src)$(date) $(OUTDIR)
html: $(HTMLSRC)
cp $(HTMLSRC) $(OUTDIR)
clean:
rm all
`` `
です。私が得ているものは*** No rule to make target 'S_SRC', needed by 'js'. Stop.
これを行う簡単な方法はありますか?ボーナスは、もしそれがワイルドカードファイルsrc/*。jsを指しているのですが、私は自分のファイル名にも大丈夫です。
また、 "app.js"のインスタンスをhtmlターゲットの "app.md5sum.js"に置き換えるmakefileターゲットがあった場合は、素晴らしいことでしょう。
更新日:
私が作ったメイクファイルはこの要点です https://gist.github.com/btrepp/164b0153aa9f8d7e258765af7f1c12fc
それはindex.htmlをスキャンし、スクリプトの参照を見つけます。それらを指紋採取し、一致させるためにindex.htmlを更新する。だから私は任意のjsファイルに無限のキャッシュの有効期限を使用することができます
それは素晴らしいです。ファイルをコピーするにはどうすればいいですか?私は '$(OUTDIR)/%.js:$(SRCDIR)/%.*。js cp ... etc'のようなものを書こうとしましたが、問題があります。依存関係のmd5ですが、暗黙の照合には私はそれを知っている必要があります。 –
間接的な変数を使って連想配列をハックアップすることも、依存関係のハードコードされたリストを生成することもできます。基本的には、ソースからの(MD5チェックサム付きの)ターゲットからのマッピングを持つMakefileスニペットを作成し、それを 'include 'します。 – tripleee
依存リストに$(basename $(basename%))。extを使うことができました。 2番目の最後の拡張子(md5sum)のこのストリップ –