JavaScriptミニファイア

JavaScriptファイルを圧縮し、削減量をその場で確認できます。

ブラウザ内で動作します。入力した内容はどこにも送信されません。

JavaScriptの圧縮方法

  1. JavaScriptを貼り付けます。
  2. 読みやすさを保ちたい場合は「圧縮」や「変数名を短縮」をオフにします。
  3. 圧縮後のファイルをコピーまたはダウンロードします。

圧縮と変数名短縮がそれぞれ行うこと

オプション行うこと
圧縮(Compress)使われないコードを削除し、式を単純化
変数名を短縮ローカル変数をa、b、cのような短い名前に変更

どちらの場合も変わらないもの

  • 外部から見た動作:同じ入力からは同じ出力が得られます。
  • ユーザーに表示されるテキストを含む、コード内のすべての文字列。
  • 処理が実行される順序。
  • /*! ... */形式のコメント。Terserは標準でこの形式を保持し、多くのライブラリがライセンス表記に使う慣習だからです。

JavaScriptを圧縮するコツ

  • 本番環境のエラーを読めるように、圧縮していないコピーを残すか、ビルドツールでソースマップを生成しましょう。
  • 他の開発者が読むライブラリでは「変数名を短縮」をオフにし、エラーメッセージに意味のある名前が残るようにしましょう。
  • 広く使われているミニファイアでも稀なエッジケースはあり得るため、公開前に圧縮後の出力に対してテストを実行しましょう。

JavaScriptミニファイアのFAQ

圧縮後のJavaScriptは有効なコードのままですか?

はい。名前が短くなり余分な空白がなくなるだけで、元のコードと全く同じように動作します。

JavaScriptは通常どのくらい小さくなりますか?

元のコードにあるコメントや長い変数名の量にもよりますが、多くの場合30〜60%小さくなります。

コードに構文エラーがあるとどうなりますか?

エラーが発生した行と列とともに表示されるため、修正してもう一度試せます。

「圧縮(Compress)」と「変数名を短縮」の違いは何ですか?

圧縮はコードを書き換えて、使われない分岐を削除したり式を単純化したりします。変数名を短縮は、ローカル変数を1文字の名前に変えます。どちらか一方だけをオフにすることもできます。

asyncやアロー関数のような最新の構文も圧縮できますか?

はい。オプショナルチェイニングやasync/awaitなど、ES2020以降の構文も含めて対応しています。

どのミニファイアを使っていますか?

UglifyJSの標準的な後継であるTerserを使っています。webpack、Rollup、esbuildなど、ほとんどのバンドラーがデフォルトで使うミニファイアです。

圧縮によってコードが壊れることはありますか?

通常のコードでは動作が変わることはありません。ただし、非標準的なイントロスペクションの手法などで、実行時に関数や変数の元の名前を読み取るコードは、名前が短縮されると壊れる可能性があります。該当する場合は「変数名を短縮」をオフにしてください。

TypeScriptの構文にも対応していますか?

いいえ、通常のJavaScriptのみを想定しています。TypeScriptの型注釈は有効なJavaScriptではないため、ここでは構文エラーになります。先にTypeScriptをJavaScriptにコンパイルしてください。

関連ツール