cn: движок для объединения классов Tailwind без зависимостей

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 — рабочий, но с оговорками

ИмпульсТемпЗрелостьСообществоСвежестьСтартПродакшенДовериеДокументацияЭкосистема58
  • Импульс 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 →

Что нового на GitHub — короткие обзоры на русском Новые обзоры приходят в Telegram. Без спама, по делу.
Подписаться

Похожие статьи

Популярные темы на сайте