私は Clojure と ClojureScript の大ファンであり、自分のプロジェクトでは通常、他の代替手段よりも ClojureScript を使用することを好みます。コードで API を使用しない場合でも、生成された JavaScript に Google Closure ライブラリを含めることができます。
この余分な重みを回避する ClojureScript をコンパイルする方法はありますか?
私は Clojure と ClojureScript の大ファンであり、自分のプロジェクトでは通常、他の代替手段よりも ClojureScript を使用することを好みます。コードで API を使用しない場合でも、生成された JavaScript に Google Closure ライブラリを含めることができます。
この余分な重みを回避する ClojureScript をコンパイルする方法はありますか?
余分なサイズは Google Closure ライブラリからのものではありません。高度な最適化を有効にしている場合、Closure コンパイラは、使用していない Closure ライブラリ コードを最終的な JavaScript から削除します。むしろ、遅延 seq や promise などを実装する Clojure ランタイム全体が含まれているため、JavaScript は大きく見えます。
訂正: Zubair が指摘しているように、以下の手順は Google Closure の最適化を無効にしますが、最終的な JavaScript から Google Closure コードを削除するわけではありません。他の回答が示唆するように、高度な最適化を選択して未使用の JavaScript を排除する必要があります。
ClojureScript : Up and Runningで、著者は Google Closure ステップを無効にする方法を説明しています。
[in ]の
:optimizations
値を指定すると、Google Closure コンパイラはまったく呼び出されず、ビルドは ClojureScript コンパイラによって生成された JavaScript を直接書き出します。このモードは、開発とデバッグに役立ちます。ただし、JavaScript の出力は多くの個別のファイルに分割されるため、ブラウザでの処理が若干異なります [...]:none
project.clj
これにより、生成される JavaScript のサイズが縮小される場合と縮小されない場合があることに注意してください。これは、Google Closure が、コードが具体的に呼び出していないものを取り除くためにかなりの作業を行うためです。:optimizations
( :none
、:whitespace
、:simple
および:advanced
) のさまざまな値をいじって、結果の JavaScript がそれぞれの場合にどれだけ大きいかを確認することはおそらく価値があります。