timeago.js прошёл путь от минималистичной утилиты до зрелой библиотеки с поддержкой TypeScript, ESM и расширенной системой локализации. Понимание истории помогает принимать правильные решения при миграции и обновлении зависимостей.
Первоначальная версия timeago.js вышла около 2016 года как замена jQuery-плагинам для отображения относительного времени. Основные характеристики:
render с
автообновлением.Версия 1.x была простым модулем без зависимостей, работавшим как в Node.js, так и в браузере.
Версия 2.x добавила ключевые функции:
render для автоматического обновления
DOM-элементов.cancel для остановки таймеров.register для кастомных локалей.relativeDate в опциях форматирования.Это сформировало основной API, который сохранился до сегодня.
Версия 3.x ввела:
.d.ts).timeago.js/esm).# ESM импорт локали (появился в 3.x)
import ru from 'timeago.js/esm/lang/ru';
Версия 4.x — последний мажорный релиз на момент написания. Основные изменения:
npm install timeago.js@latest # Устанавливает актуальную 4.x
| Функция | 1.x | 2.x | 3.x | 4.x |
|---|---|---|---|---|
format |
✓ | ✓ | ✓ | ✓ |
render |
✗ | ✓ | ✓ | ✓ |
cancel |
✗ | ✓ | ✓ | ✓ |
register |
✗ | ✓ | ✓ | ✓ |
| TypeScript типы | ✗ | ✗ | ✓ | ✓ |
| ESM экспорты | ✗ | ✗ | ✓ | ✓ |
relativeDate |
✗ | ✓ | ✓ | ✓ |
В версиях 1.x и 2.x локали встраивались в основной бандл:
// Старый способ — всё в одном файле
const timeago = new TimeAgo('ru');
Начиная с 3.x — каждая локаль в отдельном файле:
import ru from 'timeago.js/esm/lang/ru';
register('ru', ru);
Это позволило сократить размер основного бандла при использовании только одной-двух локалей.
В ранних версиях функция локали могла иметь разные сигнатуры. Начиная с 3.x — стандартизирована:
// Текущий стандарт (3.x, 4.x)
type LocaleFunc = (number: number, index: number) => [string, string];
При обновлении мажорной версии timeago.js проверить:
LocaleFunc — кастомные локали
требуют адаптации.format/render/cancel.{
"dependencies": {
"timeago.js": "^4.0.0"
}
}
^4.0.0 — автоматически устанавливает новые минорные
версии (4.x.x), но не мажорные. Это безопасная стратегия для
production.
В экосистеме существуют fork-и и вдохновлённые библиотеки:
Эти библиотеки следуют за релизами timeago.js с задержкой, поэтому важно проверять совместимость версий.