🔥

Fecha ~軽量日付ライブラリの紹介~

2022/12/22に公開

今年に入ってから、fechaというライブラリを使い始めました。

https://github.com/taylorhakes/fecha

というのも、moment.jsはメンテナンスモードに入ったらしいので、代わりになるようなミニマムなライブラリは無いかと血眼で探したところ、fecha(スペイン語で日付)というライブラリを見つけ、使っていたのです。

Github star数(執筆時点:2k)もnpmのインストール数(執筆時点:6261k)も申し分ないです。

しかし、調べてみても日本語の記事が無く「なんかもったいないな」と思ったので紹介記事を描くことにしました。

といっても仕様もサイズも小さいライブラリなので、こんな記事読まずにREADME読めば一発なんですけどね。

fetchのいいところ

サイズが小さい

当然ですが、moment.jsに比べてサイズが小さく済みます。

単純なパッケージサイズにしてもそうですし、ESMをしっかりサポートしているのでの必要な機能だけしかサイズに影響しません。

これはインストールの時間やバンドルサイズに大きく影響します。

使い勝手がmoment.jsとさほど変わらない

fechaがサポートしている整形トークン(YYYYとかMMとか)はmoment.jsより範囲は限られますが、メジャーなトークンはほぼ用意されており、意味はmoment.jsと一緒です。

なので、今までmoment.jsを使っていた人も簡単に使うことができます。

moment.jsとの比較として、

  • フォーマット(Date→string)
  • パース(string → Date)
  • i18n

は同様にサポートしており、

  • 日付操作(moment().add(1, 'day') みたいなの)

はサポートしていません。でもまあ、普通にJSのDateオブジェクト使えばいいんですし要らないですよね。

どうしてもというなら、イミュータブルな日付操作ライブラリとかを見つけて使うのが良いでしょう。(探すのが面倒くさくて掲載してません。。。すいません。。。というか教えてください)

追記)イミュータブルな日付操作ライブラリを自作しました。→ asatte

仕様がミニマム

README見てもらえれば分かるように何もかもがミニマムなので覚えるのもすぐですし、ReactやVueのプロジェクトで使いたくなっても癖が少なくて楽でしょう。

いわゆる"Momentオブジェクト"みたいなものはなく、stringとDateしか見える型はなく、明らかに他のミニマムライブラリやプリミティブな機能とも親和性がいいでしょう。

ミニマム過ぎて、もう書くことないです。

fecha使いましょう

調べたらTemporalというゲームチェンジングなのが待っているという記事が3年前くらいに出ていたのですが、今来ているのかもよくわからないので、とりあえずfecha使ってみましょう(笑

Discussion