最高のJavaScriptコンプレッサー[終了]


171

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

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

14
誰もが2011年の状況を知っていますか?
Dan

4
それは現在2012年です。私はUglifyJSとClosureが勝者だと思います。私はUglifyJSを使用しています。
mkoistinen 2012

私のjQuery Mobileマルチページアプリにはhtmlcompressor.com/compressor.htmlを使用しています。<script>タグ付きのHTMLファイルを受け取り、HTML、JavaScript、CSSを圧縮します。魅力のように機能します。
アンデルス

それは2017年です-現在最新のものは何ですか?
Abhinav Singi 2017年

それは2020です。デフォルトの「安全な」構成では、UglifyJSの方が「安全」であるため、わずかに勝ちます。高度なパワー使用のために、Closure CompilerはUglifyJSのお尻を自分に渡します。ADVANCDED_OPTIMIZATIONSを備えたClosure Compilerは、ワークフローとコードを同時に最適化するのに役立つあらゆる種類のトリックを実行できます。Closure Compilerの素晴らしさの例については、stackoverflow.com / a / 50355530/5601591を参照してください(免責事項:他の場所に適切なブログ投稿が見つからなかったため、私が書いた投稿を紹介する必要がありました)。
ジャックギフィン

回答:


149

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

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

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

PS:ああ、それも「美化」することができます。;-)


17
エンタープライズクラスのアプリケーションではuglifyを使用します。いい仕事をしています。
gyorgyabraham 2012年

ノードのjsminと比較できますか?
Gringo Suave

最近UglifyがAPI呼び出しを削除
Gadelkareem

@mishooねえ、私はあなたのUglify JS2が大好きです。最近、ネットワークが正常に機能していません... Windowsで使用したいと思います。いくつかの解決策?:o)
Hydroper 2015年

@mishoo私はgitリンクを表示しますが、使用方法はわかりません
Sachin Sarola

124

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

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

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

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

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

基本的に、Packerは初期圧縮時に優れた機能を発揮しますが、回線で送信する前にファイルをgzipする場合(そうする必要があります)、YUI Compressorは最終的な最小サイズを取得します。

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

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

@ ダニエル・ジェームズは、Packerがチャートを最高の圧縮でリードしていることを示すcompressorraterコメントで言及しているので、ymmvと思います


Packerには「base62エンコード」をオフにするオプションがあり、jQueryの場合、gzipの後で圧縮はyuiより小さくなります。これは、jqueryが「eval」と「with」を使用するためです。これにより、「安全な」コンプレッサーが特定の圧縮を実行できなくなりますが、packerはそれらを無視します。一般的に安全ではありませんが、jQueryはPackerでテストされています。
ダニエルジェームス

また、私を信じていない場合は、compresserrater.thruhere.netを試してください。
ダニエルジェームス

9
パッカーの欠点-解凍時間-を忘れないでください。
Nosredna 09/07/06

1
時には最悪の圧縮機(オリジナルよりもさらに大きい出力)することができクロージャをグーグル、気を付ける-それはへの文字列に非ASCII文字を変換し\uxxxx、デフォルトでリテラル..例えば使用--charset UTF-8(あなたが確信している場合は、何とかそれについてブラウザのノウハウを聞かせて)
mykhal

ClosureCompilerの出力が機能しません。jscompress.comは機能します
codenamezero

43

YUIコンプレッサーがです。圧縮率が高く、十分にテストされており、多くのトップサイトで使用されています。個人的には私が推奨しています。

私はそれを私のJavaScriptエラーやしゃっくりなしにプロジェクトに使用しました。そして、それは素晴らしいドキュメントを持っています。

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

注:Dean Edwardsの/ packer /はYUI Compressorよりも優れた圧縮率を実現しますが、それを使用すると、JavaScriptエラーがいくつか発生しました。


5
Packerはファイルサイズの点では見た目は良いですが、通常、解凍に費やされた時間は、小さいファイルをチューブに転送することによる時間の増加を上回ります。私が見た実際のブラウザのベンチマークのほとんどは、ブラウザでの実行時間の点で、gzipで提供される未圧縮の未処理ファイルよりも低速です。
Sponsz大佐2010年

ここに1つのベンチマークがあります:ericmmartin.com/comparison-of-javascript-compression-methods
大佐

Javaの実行に対処したくない場合のコンプレッサーのオンラインバージョンは次のとおりです。refresh
Bryan Legend

Base62エンコードオプションをチェックしない限り、packerを使用して圧縮されたスクリプトを解凍する必要はありません(これは素人のgzipであるため、行うべきではありません。最新のサーバーのほとんどはgzipをサポートしています)。悪用する余地がないため、base62でエンコードされたファイルをgzip圧縮しても意味がありません。最新バージョンのパッカー(最終バージョン)では、バグが発生せず、(base62エンコードを行わない限り)解凍のオーバーヘッドがなく、依然として最大の圧縮率を実現しています。また、packerのコマンドラインバージョンもあります。次のようにnpmを使用してインストールしますnpm install packer。(= D
Aadit M Shah

8

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

実際に、現在のVisual StudioソリューションのWeb配置プロジェクトにMSBuildタスクがあり、スクリプトを実行して、配置する前にShrinkSafeを介してソリューションのすべてのJSファイルを実行します。

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

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



4

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

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





1

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



1

KJScompress

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

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


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.