Day.js распространяется как npm-пакет и является стандартным модулем для современных JavaScript-проектов. Базовая установка выполняется через менеджеры пакетов:
npm install dayjs
или
yarn add dayjs
После установки библиотека становится доступной в проекте как обычный модуль Node.js или ESModule.
Импорт базовой версии:
import dayjs from 'dayjs';
или в CommonJS-среде:
const dayjs = require('dayjs');
Минимальный размер ядра библиотеки обеспечивает быструю загрузку и предсказуемое поведение в различных окружениях.
Day.js построен по принципу модульного ядра с расширениями через плагины. Основной пакет содержит только базовую функциональность работы с датами:
Дополнительные возможности подключаются отдельно, что влияет на итоговый размер бандла.
Пример подключения плагина:
import dayjs from 'dayjs';
import relativeTime from 'dayjs/plugin/relativeTime';
dayjs.extend(relativeTime);
Такой подход позволяет контролировать состав итоговой сборки и исключать неиспользуемые функции.
Для использования Day.js без сборщиков применяется загрузка через CDN. Это удобно для небольших проектов, прототипов и встраиваемых скриптов.
Подключение через CDN:
<script src="https://unpkg.com/dayjs"></script>
После загрузки библиотека становится доступной через глобальную переменную:
const now = dayjs();
При использовании CDN загружается полная сборка, включающая базовый функционал без плагинов.
В современных фронтенд-сборках Day.js интегрируется через ESModules. Наиболее распространённые инструменты:
Пример импорта в проекте на Vite:
import dayjs from 'dayjs';
const formatted = dayjs().format('YYYY-MM-DD');
Tree-shaking позволяет исключать неиспользуемые части кода, что особенно важно при подключении плагинов.
Локализация в Day.js не включена в ядро по умолчанию. Поддержка языков добавляется вручную через импорт локалей.
Пример подключения русской локали:
import dayjs from 'dayjs';
import 'dayjs/locale/ru';
dayjs.locale('ru');
После этого все операции форматирования и вывода времени учитывают выбранную локаль.
Важно учитывать, что локали являются отдельными модулями и не входят в основной пакет, что снижает общий размер библиотеки.
Плагины Day.js распространяются как отдельные модули npm-пакета и подключаются по требованию.
Пример установки плагина:
npm install dayjs-plugin-utc
Использование:
import dayjs from 'dayjs';
import utc from 'dayjs/plugin/utc';
dayjs.extend(utc);
const date = dayjs().utc();
Каждый плагин подключается отдельно, что делает архитектуру гибкой и позволяет формировать минимальные сборки под конкретные задачи.
Day.js может использоваться в нескольких форматах распространения:
ESM (ES Modules) Используется в современных сборщиках и поддерживает tree-shaking.
import dayjs from 'dayjs';
CommonJS Применяется в Node.js и старых сборках.
const dayjs = require('dayjs');
UMD через CDN Глобальная версия без необходимости сборки.
const d = dayjs();
Каждый формат ориентирован на разные среды выполнения и сценарии интеграции.
Одним из ключевых факторов распространения Day.js является малый размер. Базовое ядро занимает минимальное количество места и легко минифицируется при сборке.
Особенности:
При использовании плагинов размер увеличивается линейно в зависимости от количества подключённых модулей.
Day.js полностью совместим с Node.js и может использоваться как в серверных приложениях, так и в CLI-инструментах.
Пример использования в Node.js:
const dayjs = require('dayjs');
console.log(dayjs().format('YYYY-MM-DD HH:mm:ss'));
Библиотека не требует дополнительных зависимостей и работает в любых версиях Node.js, поддерживающих CommonJS или ESModules.
Day.js содержит встроенные типы TypeScript, что обеспечивает корректную типизацию без дополнительных деклараций.
Пример:
import dayjs from 'dayjs';
const date: string = dayjs().format('YYYY-MM-DD');
Плагины также поддерживают типизацию при правильном подключении, что позволяет использовать библиотеку в строго типизированных проектах без дополнительных настроек.
Современные сборщики анализируют импорт Day.js и включают только используемые части библиотеки. Это особенно эффективно при:
Пример оптимального импорта:
import dayjs from 'dayjs/esm';
ESM-версия позволяет добиться более агрессивного tree-shaking и уменьшения итогового размера бандла.
При подключении через CDN отсутствует возможность тонкой оптимизации. Загружается единый файл, включающий базовую функциональность.
Ограничения:
Преимущество заключается в простоте интеграции и отсутствии этапа сборки.
Day.js активно используется в:
Универсальность достигается за счёт поддержки разных форматов модулей и отсутствия жёсткой привязки к платформе или окружению.