FessではJavaScriptやCSSの最小化にYUI Compressorを利用しています。しかし、オリジナルのYUI Compressorは長らくメンテナンスされておらず、ES6(ECMAScript 2015)以降の構文に対応していませんでした。そこで、YUI Compressorをフォークして、ES6対応版を作成しました。
背景
YUI Compressorは、Yahoo!が開発したJavaScript/CSS圧縮ツールです。長年にわたり広く使われてきましたが、オリジナルのリポジトリはメンテナンスが停止しており、ES6で導入されたアロー関数やテンプレートリテラルなどの新しい構文に対応していませんでした。
コミュニティによるフォーク版(hazendaz版など)も存在しますが、ES6対応が十分ではなかったため、CodeLibsとして独自にフォークして対応することにしました。
codelibs/yuicompressor
codelibs/yuicompressorとして、ES6対応版のYUI Compressorを公開しました。主な変更点は以下の通りです。
- ES6構文(アロー関数、テンプレートリテラル、const/letなど)のサポート
- JavaScriptパーサーの更新
codelibs/yuicompressor-maven-plugin
YUI CompressorをMavenビルドで利用するためのプラグインとして、codelibs/yuicompressor-maven-pluginを作成しました。これにより、Mavenプロジェクトで簡単にES6対応の圧縮を行うことができます。
pom.xmlでの設定例:
<plugin>
<groupId>org.codelibs.maven</groupId>
<artifactId>yuicompressor-maven-plugin</artifactId>
<version>2.0.0</version>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>compress</goal>
</goals>
</execution>
</executions>
</plugin>
Fessでの適用
Fess 15.4では、yuicompressor-maven-pluginのgroupIdをcom.github.hazendaz.mavenからorg.codelibs.mavenに変更し、バージョン2.0.0を使用するようにしました。
これにより、FessのJavaScript最小化処理がES6構文に対応し、モダンなJavaScriptコードも正しく圧縮できるようになりました。