続・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 は軽量化のためとはいえプラグイン化しすぎな気がする……。