Pikaday представляет собой лёгкий JavaScript datepicker, который может использоваться как в классических проектах, так и в современных сборках с использованием модульных систем. При работе через Yarn установка сводится к подключению пакета и настройке окружения для корректной интеграции с DOM и системой сборки.
Базовая установка выполняется через Yarn и добавляет библиотеку в зависимости проекта:
yarn add pikaday
После выполнения команды пакет будет добавлен в
node_modules, а запись о зависимости появится в
package.json. В современных проектах этого достаточно для
начала использования, однако важно учитывать наличие дополнительных
зависимостей и особенностей подключения.
Pikaday поддерживает работу с ES Modules и CommonJS, что позволяет использовать его в различных сборщиках — Webpack, Vite, Rollup.
Пример подключения через ES Modules:
import Pikaday from 'pikaday';
При использовании CommonJS:
const Pikaday = require('pikaday');
После импорта библиотека становится доступной для создания экземпляра календаря.
Ранее Pikaday часто использовал Moment.js для форматирования дат, однако библиотека может работать и без него. При необходимости расширенного форматирования или обратной совместимости с legacy-кодом можно установить Moment:
yarn add moment
И подключить его в проекте:
import moment from 'moment';
В конфигурации Pikaday можно указать использование Moment.js для форматирования и парсинга дат.
После установки через Yarn и импорта модуля можно инициализировать календарь:
import Pikaday from 'pikaday';
const picker = new Pikaday({
field: document.getElementById('datepicker'),
format: 'YYYY-MM-DD',
onSelect: function(date) {
console.log(date);
}
});
Ключевой параметр field указывает на input-элемент, к
которому привязывается календарь. При выборе даты значение автоматически
записывается в поле ввода.
Pikaday не включает стили автоматически при установке через Yarn, поэтому CSS необходимо подключать отдельно.
Вариант через импорт в Jav * aScript:
import 'pikaday/css/pikaday.css';
Либо через импорт в SCSS:
@import 'pikaday/css/pikaday.css';
При использовании сборщиков важно убедиться, что обработка CSS
настроена корректно (например, через css-loader в Webpack
или встроенную поддержку Vite).
В Webpack-сборке Pikaday обычно подключается как обычная зависимость npm/yarn пакета. Пример минимальной конфигурации:
module.exports = {
module: {
rules: [
{
test: /\.css$/,
use: ['style-loader', 'css-loader']
}
]
}
};
После этого импорт CSS и JS работает без дополнительных действий.
В Vite установка через Yarn не требует дополнительных конфигураций:
import Pikaday from 'pikaday';
import 'pikaday/css/pikaday.css';
Vite автоматически обрабатывает зависимости из
node_modules, обеспечивая быстрый старт разработки.
После установки через Yarn в node_modules/pikaday
содержатся:
Главный входной файл экспортирует конструктор календаря, который используется для создания экземпляров.
При интеграции через Yarn могут возникать типовые ситуации, связанные с окружением:
1. Отсутствие CSS Календарь отображается без стилей,
если не подключён pikaday.css.
2. Ошибки при работе с датами При использовании старых проектов возможен конфликт форматов, особенно если подключён Moment.js или другие библиотеки дат.
3. Несовместимость сборщика В редких случаях требуется настройка транспиляции, если проект использует старую конфигурацию Babel.
Pikaday может использоваться в TypeScript-среде без дополнительных усилий. Типы часто подтягиваются автоматически, но при необходимости можно установить дополнительные определения:
yarn add -D @types/pikaday
И затем использовать библиотеку с типизацией:
import Pikaday from 'pikaday';
const picker: Pikaday = new Pikaday({
field: document.getElementById('datepicker') as HTMLInputElement
});
В современных SPA (React, Vue, Svelte) установка через Yarn является стандартным первым шагом, после которого библиотека интегрируется в жизненный цикл компонента.
Пример инициализации внутри компонента:
import Pikaday from 'pikaday';
import 'pikaday/css/pikaday.css';
let picker;
export function initDatepicker(el) {
picker = new Pikaday({
field: el,
format: 'YYYY-MM-DD'
});
}
Экземпляр календаря необходимо уничтожать при размонтировании компонента, чтобы избежать утечек памяти:
picker.destroy();
Yarn позволяет фиксировать версию Pikaday для стабильности сборки:
yarn add pikaday@1.8.2
Фиксация версии особенно важна в проектах, где требуется предсказуемое поведение UI-компонентов, связанных с датами и формами ввода.