問題
- 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を参照)。
- したがって、上記のすべてを考慮して、 この問題は修正されないことが決定されました。
追加情報
- 詳細については、 PTR-2671: クロージャ コンパイラ ライブラリが期待どおりに縮小されない を参照してください。