2009-06-17 13 views
5

私はyuiコンプレッサーでjavascriptを圧縮したい、 書き込むにはjavascriptを圧縮するためのファイルを作成します。javascriptを圧縮するメイクファイル

文法が難しく理解できないので、 私にサンプルのMakefileを教えてください。

+0

私は正直なところ、誰もこれをもう気にする理由を知らない。あなたのJSをgzipエンコーディングで提供し、それを使って処理してください。 Gzipはテキストを非常に効果的に圧縮します。 – SpliFF

+0

もちろん、私は効率を効率化することを期待しています。さらに私は、私のjsコードを読むのが少し難しかったという効果を期待しています。 – freddiefujiwara

+3

@SpliFF:縮小するとgzipがより効率的になります。あなたが大きな肥大化したJSフレームワークに縛られているなら、それは違いを生みます。 – Kornel

答えて

10

あなたのメイクファイルは、二行目はタブ文字だけでなく、スペースでインデントされていることを注意

code.compressed.js: code.js 
    compressor -o [email protected] $< 

ようになります。 makeユーティリティはこれを気にします。

code.compressed.js

code.jsは、圧縮するファイルで、ファイルが書き込まれるべき名前であり、そして compressorは圧縮を行うプログラムです。

-oフラグは、コンパイラなどの規則に従って、出力ファイルを示します。あなたのものは違うかもしれません。そのドキュメントを確認してください。

変数[email protected]は、この場合、このルールのターゲットであるcode.compressed.jsのMakefileの短縮形です。同様に、$<は、「このルールの最初の依存関係」の略語です。これらの変数は、あなた自身を繰り返す必要がないように、またファイルの名前が変更されたときに重複した変更を加えるのに便利です。

あなたはすべての単一の出力ファイルに圧縮され、複数のファイルがある場合は、依存関係の行にそれらをすべて入れ、その後、それらのすべてを指定するビルドルールに特殊変数$^を使用することができます。

code.compressed.js: code1.js code2.js 
    compressor -o [email protected] $^ 

代わりに、あなたはそれぞれが別々に圧縮それらをしたい場合、あなたはパターンルールを記述し、それらのすべてのためにそれを使用することができます。

TARGETS = code1.cjs code2.cjs code3.cjs 

all: $(TARGETS) 

%.cjs: %.js 
    compressor -o [email protected] $< 

最初のターゲットをビルドするには、デフォルトを作りますこの場合はallです。圧縮するファイルのリストは、TARGET変数の内容で指定します。 %は、ソースとターゲットのファイル名を一致させるためのルールを生成する代わりに使用されるワイルドカードです。

+0

非常に普通の答えをありがとう。 しかし、多くのソースコードがあります。 そのようにするには? code1.js、code2.js ,,, – freddiefujiwara

+1

あなたの質問にコメントを残すのではなく、その展開を編集してください。 – Novelocrat

関連する問題