利用可能な最高のJavaScriptコンプレッサーは何ですか?私は次のようなツールを探しています:
- 使いやすい
- 圧縮率が高い
- 信頼できる最終結果を生成する(コードを台無しにしない)
利用可能な最高のJavaScriptコンプレッサーは何ですか?私は次のようなツールを探しています:
回答:
私は最近UglifyJSをリリースしました、JavaScriptで記述されたJavaScriptコンプレッサーである(NodeJS Node.jsプラットフォームで実行されますが、Node.js
内部を必要としないため、任意のJavaScriptエンジンで実行するように簡単に変更できます)。YUI CompressorとGoogle Closureの両方よりもはるかに高速で、テストしたすべてのスクリプトでYUIよりも圧縮率が高く、Closureよりも安全です( "eval"または "with"を処理することはわかっています)。
空白の削除以外に、UglifyJSは次のことも行います。
foo["bar"]
するfoo.bar
可能性PS:ああ、それも「美化」することができます。;-)
数年後にこの質問を再訪するUglifyJSは、現時点で最良の選択肢のようです。
以下で説明するように、NodeJSプラットフォームで実行されますが、任意のJavaScriptエンジンで実行するように簡単に変更できます。
---以下の古い回答---
GoogleはClosure Compilerをリリースしました。これは、こことここで見られるように、これまでに最小のファイルを生成しているようです
基本的に、Packerは初期圧縮時に優れた機能を発揮しますが、回線で送信する前にファイルをgzipする場合(そうする必要があります)、YUI Compressorは最終的な最小サイズを取得します。
テストはjQueryコードbtwで行われました。
@ ダニエル・ジェームズは、Packerがチャートを最高の圧縮でリードしていることを示すcompressorraterコメントで言及しているので、ymmvと思います
\uxxxx
、デフォルトでリテラル..例えば使用--charset UTF-8
(あなたが確信している場合は、何とかそれについてブラウザのノウハウを聞かせて)
YUIコンプレッサーがです。圧縮率が高く、十分にテストされており、多くのトップサイトで使用されています。個人的には私が推奨しています。
私はそれを私のJavaScriptエラーやしゃっくりなしにプロジェクトに使用しました。そして、それは素晴らしいドキュメントを持っています。
私はそのCSS圧縮機能を使用したことがありませんが、それらも存在します。CSS圧縮も同様に機能します。
注:Dean Edwardsの/ packer /はYUI Compressorよりも優れた圧縮率を実現しますが、それを使用すると、JavaScriptエラーがいくつか発生しました。
npm install packer
。(= D
私はDojoプロジェクトのShrinkSafeを使用しています。これは、JavaScriptインタープリター(Rhino)を実際に使用してコード内のシンボルを検索し、そのスコープを理解するなどの処理を行うため、例外的です。反対に、正規表現を使用して同じことを行う多くの圧縮ツールとは対照的です(これは信頼性が低くなります)。
実際に、現在のVisual StudioソリューションのWeb配置プロジェクトにMSBuildタスクがあり、スクリプトを実行して、配置する前にShrinkSafeを介してソリューションのすべてのJSファイルを実行します。
編集:ちなみに、「最高」の基準はプロジェクトのニーズによって異なるため、「最高」は議論の余地があります。個人的には、ShrinkSafeは良いバランスだと思います。最小サイズ==最良と考える一部の人にとっては、不十分です。
編集: YUIコンプレッサーもRhinoを使用していることは注目に値します。
銀の弾丸を検索して、この質問を見つけました。Ruby on Rails http://github.com/sstephenson/sprocketsの場合
以前は、bananascript.comが最高の結果を出していました。
KJScompress
http://opensource.seznam.cz/KJScompress/index.html
Kjscompress / csskompressは、JavaScriptとCSSを含むファイルから重要でない空白とコメントを削除する2つのアプリケーション(kjscompress csscompress)のセットです。どちらもGNU / Linuxオペレーティングシステム用のコマンドラインアプリケーションです。