blog.bouzuya.net

2017-08-04 bouzuya/simple-gist-client 0.2.0 をつくった

bouzuya/simple-gist-client を 0.2.0 にした。その過程でいろいろと遠回りをした。

きっかけはひとつのプルリクエストだった (bouzuya/simple-gist-client#1) 。 simple-gist-client に *.d.ts が含まれているのに package.jsontypes 指定がないので動かなかったのだろう。このプルリクエストはそれを修正するものだ。ぼく自身はもうまったく使っていないリポジトリだけど、せっかくなのでマージした。

すぐに npm push したのだけど、そこでふと気になりはじめる。「いまさら TypeScript 1.8 の *.d.ts でいいのだろうか……」と。

「単純作業だろう」とたかをくくって simple-gist-client の TypeScript のバージョンアップをはじめる。 TypeScript は 1.8 で typings を使っていた。それぞれ 2.4 と @types/* へ変更する。その他の依存ライブラリもバージョンアップする。その流れで ava から bouzuya/beater の最新に置き換えて……。「よし、完了」と思ったら CircleCI でのテストに失敗した。

原因は CircleCI の対象バージョンを Node.js 4.3 に設定しており、そのバージョンで beater により失敗する。Node.js 4 を切ろうかと思ったけど、まだ一応 LTS だし……。芋づる式に beater の修正をはじめる。

問題になっているのは beater の既定のレポーターである bouzuya/beater-tap-reporter だ。これが Node.js 4 では動かない分割代入構文を使っているためにテストで失敗していた。「分割代入ぐらい動けよ」と思うのだけど、仕方ない。 beater-tap-reporter に babel を入れて、「よしよし、完了」と思ったらまた失敗する。

babel の設定が悪いらしい。 babel/babel-preset-env"targets": { "node": 4 } とする。動いた。

古い beater-tap-reporter に依存する beater もダメなので、それもバージョンアップした。

最終的に次のとおりバージョンアップした。

遠回りだ。 beater の Node.js 4 対応ができたので良しとしよう。