54
35

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

moment.js→day.jsへ移行してダイエットしよう

Last updated at Posted at 2019-04-25

概要

日付操作でお馴染みのmoment.jsですが、容量がでかいことでも知られています。

今回はday.jsを代替品として使って容量を軽くしていきたいと思います。

バンドルサイズの変化

私達のプロジェクトはNuxt.jsなので、バンドルサイズが可視化できるコマンドを使って見ていきたいと思います。

そもそものバンドルサイズを減らして何になるの?と思った人は下のサイトを閲覧するといいかもしれません。

webpackのbundle後のJavaScriptのサイズを減らしている話 | リクルートテクノロジーズ メンバーズブログ

Nuxt.jsでバンドルサイズを確認する方法

yarn build --analyze

moment.js

右上の方であぐらをかいていたmoment.jsが…
スクリーンショット 2019-04-25 16.38.07.png

day.js

いなくなりました。
スクリーンショット 2019-04-25 17.03.06.png

比較

Stat sizeだけでも、143.42KB→8.25KBへの削減ができています。めっちゃすげ〜(小並感)

スクリーンショット 2019-04-25 17.09.33.png スクリーンショット 2019-04-25 17.07.06.png

手順

momentをアンインストールする

yarn remove moment

dayjsをインストール

yarn add dayjs

とりあえずプロジェクト内で「moment」を対象にGrepし置換していく

基本「moment」を「dayjs」に置換するだけでいいはずです。

dayjsのlocaleはimportしないとundefinedのままでエラーが出てしまうので、各自importしておきましょう。
Cannot read property 'weekdays' of undefined · Issue #235 · iamkun/dayjs

moment
import moment from 'moment';

moment.locale('ja');
dayjs
import dayjs from 'dayjs';
import 'dayjs/locale/ja';

dayjs.locale('ja');

fromNowなどの相対時刻取得にも別importが必要なので注意

これに限らず他にもPluginsはあるそうです

必要な場合はこちらを参考にimport、extendしましょう

moment
import moment from 'moment';

moment.locale('ja');

const dateStr = '2019/04/22';
moment(new Date(dateStr)).fromNow();
dayjs
import dayjs from 'dayjs';
import 'dayjs/locale/ja';
import relativeTime from 'dayjs/plugin/relativeTime';

dayjs.locale('ja');
dayjs.extend(relativeTime);

const dateStr = '2019/04/22';
dayjs(new Date(dateStr)).fromNow();

まとめ

  • dayjsすご
  • importが多くなって行数増えるけどこれはトレードオフかなぁ
  • 関係ないけどlottieのサイズでかすぎだろ

バンドルサイズをうまく減らせてダイエットできました〜

lodashなども使用するメソッドのみimportするといいかもですね〜

ありがとうございました〜

僕も自分のバンドルサイズを減らすためにスケボーしたいと思います〜

参考資料

dayjs/API-reference.md at dev · iamkun/dayjs

日付時刻操作ライブラリをmomentからdayjsへ乗り換えた - Qiita

JavaScript dayjsはMoment.jsの代替になるか? | nansystem

54
35
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
54
35

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?