google-closure-compilerここにガッツリ書いてありましたが、今まで気づいていませんでした。だいたい今まで8秒かかっていたところが2秒に縮まりました。4倍早くなった計算です。
動作環境
公式によれば「OS X とLinuxをサポートしている」とのことです。
必要なもの
- Java
- gccの最新版
- Mavenの最新版
- closure-gun(npmパッケージ)
これだけです。Ubuntu 17.10ではきちんと動きました。なぜかCentOS7.2ではまだ入れることができていません。助けてください。 (追記: Javaのバージョンを9.0.0から 9.0.4にしたらCentOSでも動きました)
gccとMavenは最新版でなくてもいいかもしれません。Javaは9.0.1をインストールしたら動くことは確認しました。
gccとMavenをインストールする
この辺は各自で行ってください。
closure-gunをインストールする
ここが鬼門です。なかなか入ってくれません。インストールは次のコマンドで行います。
$ npm install closure-gun
もしコケたら
node_modules/
を消して$ npm install
しなおす- gccとMavenをアップデートする
このどちらかを試してみてください。Ubuntuはそれでなんとかなりました。CentOSはまだ解決していません。
使い方
google-closure-compilerに書いてあるとおりです。
Gulp
const compilerPackage = require('google-closure-compiler'); const closureCompiler = compilerPackage.gulp(); compilerPackage.compiler.JAR_PATH = undefined; compilerPackage.compiler.prototype.javaPath = './node_modules/.bin/closure-gun';
注意点としては、compilerPackage.gulp()
の際に{extraArguments: ['-Xms2048m']}
などは渡せないということです。これらの引数は通常java
の引数として渡されますが、今回はjavaPath
を変えているのでclosure-gun
に渡されてしまいます。closure-gun
には-Xms2048mという引数は渡せないのでエラーが置きます。
2018/2/10 追記:
CentOSへのインストールですが、ゴリ押ししたらできました。エラーは依然として起きるのですが、Makefileに書いてあるコマンドを、エラーが起きなかったものとして実行したら普通に使えました。何が起きてるのかよくわかりません。
詳しい状況を書くとこんな感じです。
- Makefileでnailgunを生成しようとするとエラーが起きる
make ng -C "./tmp/nailgun-denji-0.9.2" && mvn package --quiet -f "./tmp/nailgun-denji-0.9.2/nailgun-server/pom.xml"
でエラーが起きてるっぽい- しかし
tmp/
フォルダに必要そうなものは生成されている mv "./tmp/nailgun-denji-0.9.2/nailgun-server/target/nailgun-server-0.9.2.jar" "./nailgun/nailgun.jar"
以降を漸次実行すると普通に使える形になった
きちんと実行に必要なファイルは生成されているようなので、なんでエラーが起きているのかよくわかりません。まあ解決できたので良しとしました。