cn: движок для объединения классов Tailwind без зависимостей
cn — это новый движок для объединения классов Tailwind и разрешения конфликтов. Он заменяет tailwind-merge и clsx, обещая такую же API с полной совместимостью и в 30 раз более высокую скорость.
cn идеально подходит для тех, кто работает с Tailwind CSS и хочет оптимизировать процесс объединения классов. Благодаря отсутствию зависимостей и агностичности к фреймворкам, он справится в проектах на React, Vue, Svelte и других, включая серверные шаблоны. Установить его просто: достаточно команды npm i cn, а для миграции с предыдущих решений — npx shadcn@latest migrate cn.
Обрати внимание, что это полноценный инструмент, поэтому он мобильный и готов к использованию без настройki. Если ты ищешь более производительное решение для работы с Tailwind CSS, этот проект может стать отличным выбором.
Проект `cn` — это новый движок для объединения классов Tailwind и разрешения конфликтов. Он замещает такие библиотеки, как `tailwind-merge` и `clsx`, сохраняя те же API и обеспечивая полное соответствие их функционалу. Одно из ключевых преимуществ `cn` — скорость, которая в 30 раз выше по сравнению с аналогами.
Библиотека не имеет зависимостей и может работать с любыми фреймворками, включая React, Vue, Svelte, Solid и Astro, а также в браузерах, Node, Bun, Deno и edge-окружениях. Она предназначена для использования в любых проектах, использующих Tailwind CSS, без необходимости в `shadcn/ui`.
Установка и использование
Чтобы установить `cn`, используй следующую команду:
npm i cn
Для нового проекта достаточно импортировать библиотеку и начать использовать:
import { cn } from "cn"
export function Button({
className,
active,
...props
}: React.ComponentProps<"button"> & { active?: boolean }) {
return (
)
}
Если ты уже используешь `shadcn/ui`, то можешь заменить исходные зависимости с помощью команды:
npx shadcn@latest migrate cn
Либо это можно сделать вручную, изменив существующий импорт.
Преимущества и производительность
Бенчмарки показывают, что `cn` значительно быстрее, чем комбинация `clsx` и `tailwind-merge`. Например, для большинства вызовов производительность составляет 10 нс, тогда как у `clsx` с `tailwind-merge` — 320 нс. При больших объемах данных, таких как работающие репозитории, `cn` показывает скорость в 37 раз выше, чем у комбинации.
Ограничения
- Библиотека поддерживает Tailwind CSS версии 4. Для версий 3 следует оставаться на `tailwind-merge` версии 2.
- Классы, которые выглядят как утилиты Tailwind, обрабатываются как таковые, что соответствует поведению `tailwind-merge`.
- Для динамически созданных имен классов необходимо использовать параметр `--safelist` при сборке.
- CLI требует Node версии 20 или выше.
Обрати внимание, что `cn` сохраняет совместимость с другими библиотеками и предоставляет аналогичный функционал, что делает переход к этой библиотеке удобным и простым.
Радар проекта: 58 из 100 — рабочий, но с оговорками
- Импульс 38 ≈ 6 звёзд в день
- Темп разработки 70 53 коммита за 12 недель
- Зрелость 55 проекту 2 месяца, 14 релизов
- Сообщество 37 6 участников, 22 форка
- Свежесть 99 последний коммит — 2 дня назад
- Быстрый старт 30 есть: команда установки
- Готовность к продакшену 55 релиз cn@0.5.1, автосборка
- Безопасность и доверие 60 лицензия MIT, организация
- Документация 90 README 7.7 тыс. знаков, 12 разделов, папка docs
- Экосистема 49 2 подписчика на обновления, 5 тем
Как считаем
Только открытые данные GitHub на 31.10.2026, без оценок нейросети. Каждая ось — от 0 до 100, итог — среднее.
- Импульс — звёзд в день: за время наших замеров, а пока их нет — за всю жизнь проекта; 200 в день — максимум.
- Темп разработки — коммитов за последние 12 недель; 300 — максимум. Пока GitHub не досчитал статистику, ось не учитывается.
- Зрелость — возраст проекта (3 года — максимум) и число релизов (30 — максимум), поровну.
- Сообщество — участников с коммитами (200 — максимум) и форков (5000 — максимум), поровну.
- Свежесть — дней с последнего коммита: сегодня — 100, полгода и больше или архив — 0.
- Быстрый старт — в README есть команда установки, раздел «быстрый старт» или примеры использования, в репозитории — Docker и папка примеров, у проекта есть сайт или демо.
- Готовность к продакшену — релизы, версия 1.0 и выше, автосборка (GitHub Actions), тесты, лицензия, журнал изменений.
- Безопасность и доверие — открытая лицензия (своя — половина балла), политика безопасности (SECURITY.md), проект организации, правила для участников, не в архиве.
- Документация — объём и структура README, папка docs или сайт, оценка «здоровья сообщества» GitHub.
- Экосистема — звёзды (50 тыс. — максимум), подписчики на обновления (1000 — максимум), темы репозитория.
Открыть на GitHub: shadcn-ui/cn →
RepoRadar