技術とかの雑なToday I Learnedメモ

moment.jsからday.jsに乗り換え、移行と選定は別

moment => dayjs

今日は本当にぼんやりして記事すら読めないのでやったことだけ書く。

moment を dayjs に置換したんだけど、15 日の記事で day.js のことを書いたときに moment.js とほぼ同じ API を持つということで、使っているところを day.js に置換してみた。

開発環境で動かしてみたらエラーが出た。day.js は軽量化のため一分機能を plugin として提供しているとのことで、isSameOrBeforeなどの一部をプラグイン化しているため、そこを import したら直った。

import dayjs from 'dayjs'
import isSameOrBefore from 'dayjs/plugin/isSameOrBefore'

dayjs.extend(isSameOrBefore)

...

これだけ。

最初/pluginsだと思ってて typo してエラーが消えなくて焦った。こういうのって複数形を使うんだと勝手に先入観を持っていたらしい。

moment.js からの移行は day.js が簡単だが……

上述の通り移行はかなり簡単だったんだけど、あくまで moment.js からの移行が簡単なだけで、日付の扱い方や書き方に関しても day.js がベストかというとそれはまた別の話だと思う。

moment.js がメンテナンスモードになっていて使用が非推奨なので移行はしなくてはならないが、day.js は移行するコストが低いだけで「そのプロダクトで最適な日付の処理ができるようになる」のとは違うことを自覚しておきたい。

「moment.js を脱却すること」と「日付の扱いをより良くするライブラリを選定すること」を別物としなくては。

ただ、個人的には date-fns が気になっているんだけど、moment.js からの移行コストは無視できないので day.js になりそう。day.js を使ってみて、更に変えたいのであれば date-fns に移植するという感じになるのかな〜という印象。