173

利用可能な最高の JavaScript コンプレッサーは何ですか? 次のようなツールを探しています。

  • 使いやすい
  • 圧縮率が高い
  • 信頼できる最終結果を生成する (コードを台無しにしない)
4

13 に答える 13

151

私は最近、JavaScript で記述された JavaScript コンプレッサーであるUglifyJSをリリースしました (NodeJS Node.jsNode.jsプラットフォームで実行されますが、内部を必要としないため、任意の JavaScript エンジンで実行するように簡単に変更できます)。YUI CompressorGoogle Closureの両方よりもはるかに高速で、テストしたすべてのスクリプトでYUIよりも圧縮率が高く、Closure よりも安全です (「eval」または「with」を処理することを知っています)。

空白の削除以外に、UglifyJS は次のことも行います。

  • ローカル変数名を変更します (通常は 1 文字に)
  • 連続する var 宣言を結合します
  • 不要な括弧、括弧、およびセミコロンの挿入を回避します
  • IF を最適化します (「else」が不要であることが検出された場合はそれを削除し、可能であれば IF を &&、||、または ?/: 演算子に変換します)。
  • 可能な場合に変換foo["bar"]しますfoo.bar
  • 可能であれば、オブジェクト リテラルのキーから引用符を削除します
  • これがより小さなコードにつながる場合、単純な式を解決します (1+3*4 ==> 13)

PS: ああ、「美化」もできます。;-)

于 2010-08-22T14:50:31.130 に答える
125

数年後にこの質問を再検討すると、UglifyJSが現時点で最良の選択肢のようです。

以下に示すように、これは NodeJS プラットフォームで実行されますが、任意の JavaScript エンジンで実行するように簡単に変更できます。

--- 以下の古い回答 ---

Google がリリースしたClosure Compilerは、ここここで見られる限り最小のファイルを生成しているようです

それ以前は、さまざまなオプションは次のとおりでした

基本的に、初期圧縮ではPackerの方が優れていますが、ネットワークで送信する前にファイルを gzip する場合 (これを行う必要があります) 、 YUI Compressorが最小の最終サイズになります。

テストはjQueryコードで行われました。

  • 元の jQuery ライブラリ 62,885 バイト、gzip 後 19,758 バイト
  • JSMin で圧縮された jQuery 36,391 バイト、gzip 後は 11,541 バイト
  • jQuery を Packer で圧縮 21,557 バイト、gzip 後は 11,119 バイト
  • YUI Compressor で圧縮された jQuery 31,822 バイト、gzip 後は 10,818 バイト

@ daniel jamesがコメントの Compressorrater に言及しており、Packerが最高の圧縮でチャートをリードしていることを示しているので、ymmv だと思います

于 2008-08-26T19:48:34.927 に答える
43

YUI Compressorが最適です。それは優れた圧縮率を持ち、十分にテストされ、多くのトップサイトで使用されており、まあ、私が個人的に推奨しています.

JavaScript エラーやしゃっくりが 1 つも発生することなく、プロジェクトに使用しています。そして、それには素晴らしいドキュメントがあります。

CSS 圧縮機能を使用したことはありませんが、同様に存在します。CSS 圧縮も同様に機能します。

注: Dean Edwards の / packer / は YUI Compressor よりも優れた圧縮率を実現していますが、使用中にいくつかの JavaScript エラーに遭遇しました。

于 2008-08-26T19:39:44.010 に答える
8

は Dojo プロジェクトのShrinkSafeを使用しています。実際には JavaScript インタープリター ( Rhino ) を使用してコード内のシンボルの検索やそのスコープの理解などを処理するため、これは例外的です。正規表現を使用して同じことを行う多くの圧縮ツールとは対照的です(信頼性は高くありません)。

私は実際に、現在の Visual Studio ソリューションのWeb 配置プロジェクトにMSBuild タスクを持っています。このタスクは、配置する前に ShrinkSafe を介してソリューションのすべての JS ファイルを実行するスクリプトを実行し、非常にうまく機能します。

EDIT:ちなみに、「最良」の基準はプロジェクトのニーズによって異なるため、「最良」については議論の余地があります。個人的には、ShrinkSafe はバランスが取れていると思います。最小サイズ == ベストと考える人にとっては、それでは不十分です。

編集: YUI コンプレッサーも Rhino を使用していることは注目に値します。

于 2008-08-26T20:03:40.007 に答える
5

JSMinを試してみてください。C #、Java、C、およびその他のポートを取得し、すぐに利用できます。

于 2008-08-26T19:42:48.153 に答える
4

Packerを使用する場合は、「変数の縮小」オプションを実行して、結果のコードをgzipで圧縮します。base62オプションは、サーバーがgzip圧縮されたファイルを送信できない場合にのみ使用できます。'shrink vars'を使用したPackerは、YUIの圧縮を向上させますが、どこかでセミコロンをスキップした場合、バグが発生する可能性があります。

base62は基本的に貧乏人のgzipです。そのため、base62-edコードをgzipで圧縮すると、shrink-var-edコードをgzip圧縮するよりも大きなファイルが得られます。

于 2008-08-28T14:43:38.073 に答える
3

JSMinは別のものです。

于 2008-08-26T19:41:56.253 に答える
2

銀の弾丸を検索して、この質問を見つけました。RubyonRailsの場合 http://github.com/sstephenson/sprockets

于 2010-05-19T14:29:14.890 に答える
1

これを行う HttpHandlerのソースコードは次のとおりです。

于 2008-08-26T19:48:33.770 に答える
1

Js Crushは、圧縮後に使用するのに適したコンプレッサーです。

于 2010-08-22T17:47:14.757 に答える
1

いつもbananascript.comが最高の結果をもたらしてくれました。

于 2008-09-15T18:50:53.557 に答える
1

KJS圧縮

http://opensource.seznam.cz/KJScompress/index.html

Kjscompress/csskompress は、JavaScript と CSS を含むファイルから重要でない空白とコメントを削除する 2 つのアプリケーション (kjscompress と csscompress) のセットです。どちらも GNU/Linux オペレーティング システム用のコマンドライン アプリケーションです。

于 2009-06-07T15:55:07.267 に答える
1

これは YUI コンプレッサー スクリプト ( Byuic ) で、パスにあるすべての js と css を見つけて圧縮し、/(オプションで) 難読化します。ビルド プロセスに統合すると便利です。

于 2008-08-26T22:35:02.513 に答える