Choices.js распространяется как npm-пакет и полностью совместима с Yarn как с менеджером зависимостей. Подключение через Yarn обычно используется в проектах с современным стеком: Vite, Webpack, Rollup, Next.js, Nuxt и аналогичных сборщиках, где управление зависимостями централизовано и требуется предсказуемая версия библиотеки.
Базовая установка выполняется стандартной командой Yarn для добавления зависимости в проект:
yarn add choices.js
После выполнения команда добавляет библиотеку в
node_modules и фиксирует её версию в файле
package.json в секции dependencies.
В yarn.lock создаётся запись с точной версией пакета,
что обеспечивает воспроизводимость установки на разных окружениях.
После установки версия Choices.js доступна через менеджер пакетов:
yarn list --pattern choices.js
или через просмотр package.json:
{
"dependencies": {
"choices.js": "^10.2.0"
}
}
Фактическая версия может отличаться в зависимости от времени установки и политики обновлений проекта.
Choices.js использует ES-модульную структуру, что делает его совместимым с современными сборщиками без дополнительных конфигураций.
Простейший импорт:
import Choices from 'choices.js';
После импорта доступен конструктор Choices, который
применяется к DOM-элементам <select> или
<input>.
Функциональность Choices.js тесно связана с визуальной частью, поэтому обязательным этапом является импорт стилей.
import 'choices.js/public/assets/styles/choices.min.css';
При отсутствии стилей компонент остаётся функциональным, но теряет базовую визуализацию: выпадающие списки, состояния фокуса, оформление тегов и анимации.
После установки через Yarn и подключения модулей библиотека инициализируется на элементе формы.
HTML-структура:
<sel ect id="city-select">
<option value="karaganda">Караганда</option>
<option value="astana">Астана</option>
<option value="almaty">Алматы</option>
</select>
JavaScript-инициализация:
import Choices fr om 'choices.js';
import 'choices.js/public/assets/styles/choices.min.css';
const element = document.getElementById('city-select');
const choices = new Choices(element);
В момент инициализации оригинальный <select>
заменяется управляемым UI-компонентом с расширенной логикой обработки
выбора.
В Vite установка через Yarn не требует дополнительных настроек:
yarn add choices.js
Импорт выполняется напрямую:
import Choices from 'choices.js';
import 'choices.js/public/assets/styles/choices.min.css';
Vite автоматически обрабатывает CSS и ESM-импорты, включая оптимизацию зависимостей при dev-сборке.
В Webpack поведение зависит от конфигурации загрузчиков.
Минимально необходимая конфигурация включает поддержку CSS:
module.exports = {
module: {
rules: [
{
test: /\.css$/,
use: ['style-loader', 'css-loader'],
},
],
},
};
После этого Choices.js подключается стандартным импортом:
import Choices from 'choices.js';
import 'choices.js/public/assets/styles/choices.min.css';
Choices.js поддерживает TypeScript через встроенные типы, поэтому
дополнительных @types пакетов обычно не требуется.
Пример инициализации:
import Choices from 'choices.js';
const element = document.querySelector<HTMLSelectElement>('#city-select');
if (element) {
const choices = new Choices(element, {
searchEnabled: true,
removeItemButton: true,
});
}
Типизация позволяет безопасно работать с конфигурационными объектами и методами экземпляра.
В монорепозиториях Yarn Workspaces Choices.js устанавливается на уровне корневого пакета или конкретного workspace.
Корневая установка:
yarn add choices.js -W
Локальная установка в workspace:
yarn workspace frontend add choices.js
Такая структура позволяет избегать дублирования зависимостей и поддерживать единый lock-файл.
Choices.js не имеет обязательных peer-dependencies, что упрощает установку и снижает вероятность конфликтов версий.
При этом библиотека может использовать стандартные браузерные API:
querySelector, classList)Эти зависимости не требуют отдельной установки, так как являются частью среды выполнения браузера.
Обновление выполняется стандартной командой:
yarn upgrade choices.js
или до конкретной версии:
yarn add choices.js@11.0.0
После обновления важно учитывать возможные изменения API, особенно в методах инициализации и конфигурации экземпляра.
Корректная установка подтверждается успешной инициализацией
компонента без ошибок в консоли и появлением кастомного UI вместо
стандартного <select>.
При наличии ошибок чаще всего проверяются следующие аспекты:
<select>Внутренняя структура Choices.js после установки через Yarn включает:
dist/choices.jsdist/choices.min.jspublic/assets/styles/Современные сборщики автоматически используют ESM-версию, если она доступна, что улучшает tree-shaking и уменьшает итоговый размер бандла.
При переходе в production режим Choices.js не требует дополнительной конфигурации, однако рекомендуется:
Пример управления жизненным циклом:
const choices = new Choices(element);
// обновление данных
choices.setChoices(newData, 'value', 'label', true);
// уничтожение экземпляра
choices.destroy();
Такая модель особенно важна в SPA-приложениях, где компоненты часто пересоздаются при навигации между страницами.