date-light — 3.11KBのTypeScript日付ユーティリティライブラリ
(date-light.flyingsquirrel.me)日付ライブラリを入れたいものの、locale/timezone/duration/pluginまで全部が必要というわけではないことがある。
date-lightは、この問題を解決する小さな日付ユーティリティライブラリだ。Web/アプリでよく使う日付処理だけを選び、39個の関数として提供する。ランタイム依存はなく、TypeScript型とESM/CJSエントリーポイントを含む。
import { addDays, differenceInDays, format, startOfWeek } from "date-light";
const launch = new Date(2026, 5, 30, 14, 30);
const reminder = addDays(launch, -7);
format(launch, "yyyy-MM-dd HH:mm"); // "2026-06-30 14:30"
format(startOfWeek(launch), "yyyy-MM-dd"); // "2026-06-29"
differenceInDays(launch, reminder); // 7
何を提供するのか
format, parseISO, parse
addDays, addMonths, addYears, addHours, subDays, subMonths...
differenceInDays, differenceInMonths, differenceInYears
isBefore, isAfter, isEqual, isSameDay, isSameMonth
isWeekend, isLeapYear, isValid, getDaysInMonth
startOfDay, endOfWeek, startOfMonth, endOfYear など
入力のDateは変更しない。すべての関数は新しいDateを返すか、値を計算する。
なぜ作ったのか
ほとんどのアプリは、日付ライブラリのごく一部しか使わない。
日付をフォーマットし、ISO文字列をパースし、数日足し、2つの日付の差を求め、週/月/年の始まりと終わりに揃える程度だ。
date-lightは、この範囲だけを小さく持っていこうという考え方だ。date-fnsに近い使い心地を保ちつつ、よく使うユーティリティだけをまとめた。
意図的に入れていないもの
locale、timezone DB、durationオブジェクト、プラグイン、チェイニングAPIはない。
こうした機能が必要なら、Intl、Temporal、Luxon、date-fnsのほうが適している。date-lightは、一般的なアプリの日付処理だけを小さく持ちたいときに使うツールだ。
サイズ
39個の関数で約3.11KB minzipped。
ドキュメントのバンドルサイズ比較基準では、date-fnsから同様の20個の関数を持ってくる場合より約5.9倍小さい。
GitHub: https://github.com/flyingsquirrel0419/date-light
npm: npm install date-light
docs/playground: https://date-light.flyingsquirrel.me/
まだコメントはありません。