legacy-knowledge-base
公開されました Jul. 2, 2025

JavaScript Minifier は変数/パラメーター名を短縮しません

投稿者

Jose L. Bango

knowledge-article-header-disclaimer-how-to

knowledge-article-header-disclaimer

legacy-article

learn-legacy-article-disclaimer-text

問題

  • Liferay インスタンスを次のように構成すると:
    minifier.enabled=true
    javascript.fast.load=true
    theme.images.fast.load=true
    layout.template.cache.enabled=true
    JavaScript Minifier は、空白、改行、コメントなどを正常に削除しますが、変数や関数パラメーター名を短縮しません。
  • たとえば、次の場合:
    function foo(bar){
       alert(bar);
    }
    次の出力が得られます。
    function foo(bar){alert(bar);}
    次のようなものの代わりに:
    function foo(a){alert(a);}
  • Liferay とカスタム開発ファイルの両方で発生します。

Environment

  • DXP 7.1 以上

解決策

  • 縮小は、実行時に クロージャ コンパイラ ライブラリ によって行われます。
  • バージョン v20131014 から v20180204へのアップグレード以来、ミニファイアーは期待どおりに機能しませんでした: 前述のように変数/パラメーター名を短縮しません。
    • これはまだ 7.0.x にバックポートされていないため、DXP 7.0 は影響を受けません。
    • これは、クロージャ コンパイラ ライブラリの 既知のバグ です。
    • この方法で提供された場合、完全に縮小されたファイル (通常は YUI ファイル) が見つかる可能性があることに注意してください。
  • この問題を解決するには、より積極的な縮小を実行する必要があります。 数年経った今、解決しようとすると、実行時に予期しないエラーが発生することがわかりました。
    • リソースの高速読み込み (1 つのリソースで複数のファイルを提供する) により、プラットフォームでこれらのエラーが発生しやすくなることに注意してください。
  • さらに、カスタム開発されたコードが存在すると、より積極的な縮小を試みると、そこで新しいエラーが発生する可能性があります。
  • Liferay DXP 7.4 では、この縮小方法 (実行時) は廃止され、ビルド時の縮小が推奨されました ( LPS-122883を参照)。
  • したがって、上記のすべてを考慮して、 この問題は修正されないことが決定されました

追加情報

did-this-article-resolve-your-issue

legacy-knowledge-base