Panda Noir

JavaScript の限界を究めるブログでした。最近は幅広めに書いてます。

Closure Compilerが遅すぎるので早くする

google-closure-compilerここにガッツリ書いてありましたが、今まで気づいていませんでした。だいたい今まで8秒かかっていたところが2秒に縮まりました。4倍早くなった計算です。

動作環境

公式によれば「OS X とLinuxをサポートしている」とのことです。

必要なもの

  • Java
  • gccの最新版
  • Mavenの最新版
  • closure-gun(npmパッケージ)

これだけです。Ubuntu 17.10ではきちんと動きました。なぜかCentOS7.2ではまだ入れることができていません。助けてください。

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という引数は渡せないのでエラーが置きます。