続・moment.js から day.js に書き換えた
昨日の記事で moment.js から day.js に書き換えたことを書いたんだけど、その続編。
一応 moment が使われているところは grep して洗い出して、利用しているところに必要なプラグインを import して問題なく移行したつもりでいたんだけど、CI でテストがコケた。
テストがコケた箇所から呼ばれている部分をよく読んでみたり day.js のドキュメントを読んだりして解決したのでメモしておく。
IsoWeek
new Date(moment(date).startOf('isoWeek'))
というコードの部分がコケているっぽいというのがわかったので day.js のドキュメントを確認しにいった。
moment オブジェクトから直接呼んでいる部分(moment().isoWeek()みたいなやつ)があるわけではないので、ここではなさそうだと思ってstartOfのページを見に行ったらあった。
'isoWeek'という単位を渡す場合は上記のIsoWeekプラグインに依存しているらしい。
今回は使わなかったけど、'quarter'という単位を渡す場合もQuarterOfYearというプラグインを入れなければいけないらしい。
CustomParseFormat
const time = moment(date, 'HH:mm:ss')
というコードが問題となってテストが落ちていた。
一見特に問題なさそうなんだけど、どうやら第二引数にフォーマットを渡す場合は独自フォーマットということになり、CustomeParseFormatというプラグインが必要らしい。
これ、よく考えたら普通に.format('HH:mm:ss')でよさそうだしプラグインいらない気がしてきた。
まとめ
テストがあって本当によかった。テストを書いてくれた方々に圧倒的な感謝。
あと day.js は軽量化のためとはいえプラグイン化しすぎな気がする……。