Библиотека Tippy.js предоставляет несколько вариантов сборок, которые отличаются по размеру, набору функций и зависимостям. Понимание этих альтернатив позволяет оптимизировать загрузку приложения и выбирать подходящий функционал для конкретной задачи. Основные типы сборок:
UMD (Universal Module Definition) Предназначена
для использования напрямую в браузере через <script>
тег. Сборка включает все основные функции Tippy.js, совместима с
CommonJS и AMD модулями. Подходит для проектов, где нет системы сборки
модулей, таких как Webpack или Rollup.
ESM (ECMAScript Modules) Современная модульная
сборка, рассчитанная на импорт с помощью import.
Поддерживает tree-shaking, что позволяет исключать неиспользуемые
функции и снижать размер финального бандла. Часто применяется в проектах
на Vue, React или Svelte, где используется сборка через Vite или
Webpack.
CJS (CommonJS) Используется в Node.js среде или
в сборках, где требуется CommonJS синтаксис (require).
Включает все функции Tippy.js и может быть интегрирована в серверные
рендеринги, например, при генерации HTML на сервере.
tippy.js vs
tippy.js/dist/tippy-bundle.umd.min.jsTippy.js использует Popper.js для позиционирования тултипов. Однако есть сборки, включающие Popper.js напрямую, и те, где Popper.js подключается отдельно:
tippy-bundle.umd.min.js Содержит встроенный Popper.js, готова к использованию сразу после подключения. Это удобно для проектов без менеджера пакетов, но увеличивает размер скрипта.
tippy.js (основная сборка) Не включает Popper.js, что позволяет подключать любую версию Popper.js отдельно. Дает больше гибкости и уменьшает размер бандла, если Popper.js уже используется в проекте.
В ESM сборке можно выбирать только необходимые плагины Tippy.js. Например, если нужны только базовые тултипы без интерактивных модулей, можно импортировать только core:
import tippy from 'tippy.js/core';
import { followCursor } from 'tippy.js/plugins';
tippy('.tooltip', {
content: 'Пример тултипа',
plugins: [followCursor],
});
Такой подход уменьшает размер итогового скрипта и ускоряет загрузку страницы.
Tippy.js предлагает минифицированные версии каждой сборки:
.min.js – минимизированная версия для продакшена,
сжатие кода, удалены комментарии и пробелы..umd.js или .esm.js – неминифицированные
версии для разработки и отладки, с сохранением читаемого кода и
комментариев.Выбор между ними зависит от стадии проекта: для разработки удобнее использовать неминифицированные версии, для продакшена — минифицированные.
Некоторые функции Tippy.js реализованы через плагины, что делает их доступными только в соответствующих сборках. Основные плагины:
followCursor – тултип следует за курсором.inlinePositioning – поддержка позиционирования для
inline-элементов.sticky – позволяет тултипу «прилипать» к элементу при
скролле.Для уменьшения объема кода можно подключать только необходимые
плагины через ESM сборку tippy.js/core, исключая ненужные
функции.
| Сборка | Размер | Зависимости | Поддержка модулей | Использование |
|---|---|---|---|---|
| UMD bundle | ~40 KB | Встроенный Popper.js | AMD, CommonJS, | Быстрое подключение через браузер |
| ESM core | ~15 KB | Popper.js отдельно | import/export | Tree-shaking, минимальный бандл |
| CJS | ~35 KB | Popper.js отдельно | require | Node.js, SSR |
UMD через <script>:
<script src="tippy-bundle.umd.min.js"></script>
<script>
tippy('.tooltip', { content: 'Тултип' });
</script>
ESM через npm:
import tippy from 'tippy.js/core';
import 'tippy.js/dist/tippy.css';
tippy('.tooltip', { content: 'Тултип' });
CJS через Node.js:
const tippy = require('tippy.js').default;
tippy('.tooltip', { content: 'Тултип' });
Для минимизации итогового размера и ускорения загрузки рекомендуется:
.min.js.Эти методы позволяют создавать легкие, быстрые и гибкие реализации тултипов без лишних зависимостей.