Flatpickr распространяется как npm-пакет и легко интегрируется в современные JavaScript-сборки. Основной пакет содержит ядро функциональности выбора дат, а дополнительные возможности подключаются через конфигурацию и плагины.
Базовая установка выполняется стандартной командой npm:
npm install flatpickr
После установки пакет попадает в node_modules/flatpickr
и становится доступным для импортирования в модульной системе
проекта.
Для проектов, использующих Yarn:
yarn add flatpickr
Для pnpm:
pnpm add flatpickr
Во всех случаях устанавливается одна и та же структура пакета, совместимая с ESM и CommonJS окружениями.
В современных сборщиках (Vite, Rollup, Webpack с ESM) предпочтителен
импорт через import:
import flatpickr from "flatpickr";
Базовый вызов инициализации:
flatpickr("#date-input", {
enableTime: true,
dateFormat: "Y-m-d H:i",
});
Такой способ обеспечивает tree-shaking и корректную работу в современных сборках.
В Node.js-проектах или старых конфигурациях Webpack используется
require:
const flatpickr = require("flatpickr");
Далее API используется аналогично:
flatpickr("#date-input", {
dateFormat: "d.m.Y",
});
Flatpickr не включает стили автоматически в runtime-бандл, поэтому CSS необходимо импортировать отдельно.
В ESM-сборках:
import "flatpickr/dist/flatpickr.min.css";
Также доступны темы:
import "flatpickr/dist/themes/dark.css";
import "flatpickr/dist/themes/material_blue.css";
Стили лежат внутри пакета flatpickr/dist/.
Vite корректно обрабатывает npm-модули без дополнительной конфигурации:
import flatpickr from "flatpickr";
import "flatpickr/dist/flatpickr.min.css";
flatpickr("#calendar", {});
Особенности:
В Webpack подключение аналогично, но важно наличие CSS-loader:
import flatpickr from "flatpickr";
import "flatpickr/dist/flatpickr.min.css";
Минимальная конфигурация loader’а:
module: {
rules: [
{
test: /\.css$/,
use: ["style-loader", "css-loader"],
},
],
}
Flatpickr содержит встроенные типы, поэтому отдельная установка
@types не требуется.
Пример использования:
import flatpickr from "flatpickr";
flatpickr<HTMLInputElement>("#date", {
enableTime: true,
dateFormat: "Y-m-d H:i",
});
Типизация позволяет явно указать HTML-элемент и предотвращает ошибки при работе с DOM.
После установки в node_modules/flatpickr доступны
ключевые директории:
dist/ — собранные файлы (JS, CSS, темы)l10n/ — локализацииesm/ — ESM-сборкаtypes/ — TypeScript определенияplugins/ — плагины расширения функциональностиЛокализации подключаются отдельно:
import flatpickr from "flatpickr";
import { Russian } from "flatpickr/dist/l10n/ru.js";
flatpickr("#date", {
locale: Russian,
});
Каждая локализация представляет собой модуль с набором строк интерфейса.
В серверном рендеринге (например, Next.js) важно учитывать отсутствие DOM:
import dynamic from "next/dynamic";
const Flatpickr = dynamic(() => import("flatpickr"), { ssr: false });
Инициализация выполняется только на клиенте, так как библиотека
зависит от window и document.
Рекомендуемая схема подключения через npm:
import flatpickr from "flatpickr";
import "flatpickr/dist/flatpickr.min.css";
import { Russian } from "flatpickr/dist/l10n/ru.js";
export function initDatepicker(selector) {
return flatpickr(selector, {
locale: Russian,
enableTime: true,
dateFormat: "d.m.Y H:i",
});
}
Такой подход позволяет изолировать инициализацию и повторно использовать компонент в разных частях приложения.