gitbookのmathjaxプラグインが突如動かなくなる

どうやら昨日mathjaxがメジャーバージョンアップ(v3.0.0)したらしい。リリースノートによると、中身がモダンなテクニックを使って全て書きなおされているようだ。

This version is a complete rewrite of MathJax from the ground up using modern programming techniques, including Typescript, ES6 modules, Promises, and more.

圧倒的に多くのコードに依存されているであろうに、それでも一気に書きなおしてモダンな機能にスイッチする決断を下せるというのは素晴らしいことだと思う(特にTypescript!)。この調子で開発が続くなら、今後もコードの質の水準は高く保たれるのではなかろうか。今までレンダリングが遅かったりしてあまり好感度が高くなかったが、今回かなり上がった。

それはそれとして、gitbookのプラグインとしてのmathjaxはmathjax-node経由でmathjaxに依存している。依存経路が複雑だったのでまだちゃんと追えていないが、gitbookでmathjaxを使おうとするとバージョン3のコードが降ってきて、バージョン2時代のコードをロードしようとして落ちる。これは困った。

機能はリリース予定日だったので、ドキュメントページがそのために落ちてリリースが伸びるというのは耐え難い。ので、今回は強引にも程がある方法を取った。CircleCIでhtmlをビルドしてpushしているので、CircleCI上でgtibookがnpm経由で取ってきたmathjaxをrm -rfし(node_modules/mathjaxに入っていることは知っているので)、そこに自分でmathjaxのレポジトリをクローンして2.7.6にチェックアウトした。パッケージマネージャなんのその、自力ダウングレードだ!! 頑張って書き直したmathjaxには申し訳ないとは思っている。多分私がでかめのプロジェクトで「書きなおしていいよ」などと言われたらウキウキで参加すると思うので。

とりあえず、当座を凌ぐためならこれで何とかできる。後々、どこかのパッケージのバージョン指定が2固定になるか、あるいは追従して3以上固定になるまではこれでしのごう。たまにその辺りを調べるのを忘れないようにしないと、とても強引なコードが残ってしまう……。