yui-compressorのようなコンプレッサーがjsまたはcssファイルを圧縮するために何をするのか、自分のコンプレッサーを作成したい場合はどのような手順を踏む必要があるのかを知りたいです。
3 に答える
YUI CompressorはJavaで記述されており(Java> = 1.4が必要)、Rhinoに依存してソースJavaScriptファイルをトークン化します。まず、ソースJavaScriptファイルを分析して、その構造を理解します。次に、トークンストリームを出力し、可能な限り多くの空白文字を省略し、すべてのローカルシンボルを1(または2、または3)文字のシンボルに置き換えます(evalなどの悪意のある機能に直面した場合)。または、YUI Compressorは、悪意のあるステートメントを含むスコープを難読化しないことにより、防御的なアプローチを取ります)CSS圧縮アルゴリズムは、微調整された正規表現のセットを使用して、ソースCSSファイルを圧縮します。YUI Compressorはオープンソースであるため、コードを見て、その動作を正確に理解することを躊躇しないでください。
公式ドキュメントサイトから
「YUIコンプレッサーはどのように機能しますか? YUI CompressorはJavaで記述されており(Java> = 1.4が必要)、Rhinoに依存してソースJavaScriptファイルをトークン化します。まず、ソースJavaScriptファイルを分析して、その構造を理解します。次に、トークンストリームを出力し、可能な限り多くの空白文字を省略し、すべてのローカルシンボルを1(または2、または3)文字のシンボルに置き換えます(evalなどの悪意のある機能に直面した場合)。または、YUI Compressorは、悪意のあるステートメントを含むスコープを難読化しないことにより、防御的なアプローチを取ります)CSS圧縮アルゴリズムは、微調整された正規表現のセットを使用して、ソースCSSファイルを圧縮します。YUI Compressorはオープンソースであるため、コードを見て、その動作を正確に理解することを躊躇しないでください。」
ここにCss圧縮コード https://github.com/yui/yuicompressor/blob/master/src/com/yahoo/platform/yui/compressor/CssCompressor.java
私が知っているように、これらは主要なステップです:
- 余分なスペースをすべて削除します(パーサーはそれらを必要としません)
- キャリッジリターンを削除します(パーサーもそれらを必要としません)
JSの場合
- もちろん、変数名をより短く、一意の新しいものに置き換えます
編集:良いアイデアを得る最も簡単な方法は、実際には1つのCSSとJSを作成し、圧縮後に違いを確認することです。