Реестр компонентов
Цель и область применения
Реестр компонентов — это централизованная система метаданных, которая каталогизирует все компоненты в@ui8kit/core и обеспечивает несколько паттернов установки и использования. Реестр определен в src/registry.json1-281 и предоставляет структурированные метаданные, включая названия компонентов, типы, зависимости, пути к файлам и целевые директории.
Эта страница документирует формат реестра, схему метаданных компонентов, процесс регистрации и то, как реестр поддерживает различные методы установки. Для получения информации о конвейере сборки, который генерирует артефакты реестра, см. Система сборки. Для получения подробной информации о распространении пакета см. Структура пакета.
Источники: src/registry.json1-281 README.md251-276
Структура файла реестра
Реестр представляет собой JSON-файл, соответствующий схеме buildy-ui. Он содержит три свойства верхнего уровня:| Свойство | Тип | Описание |
|---|---|---|
$schema | string | URL JSON-схемы для валидации |
items | array | Массив объектов метаданных компонентов |
version | string | Версия схемы реестра (в настоящее время “1.0.0”) |
lastUpdated | string | Временная метка последнего обновления в формате ISO 8601 |
registry | string | Идентификатор реестра (“ui”) |
Диаграмма схемы реестра
Схема метаданных компонента
Каждая запись компонента в массивеitems содержит следующие поля:
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
name | string | Да | Название компонента (например, “Button”, “Card”) |
type | string | Да | Категория компонента: “registry:ui” или “registry:layout” |
description | string | Да | Описание компонента (может быть пустой строкой) |
dependencies | string[] | Да | Зависимости времени выполнения (например, “react”, “lucide-react”) |
devDependencies | string[] | Да | Зависимости разработки (обычно пустой массив) |
files | object[] | Да | Массив объектов метаданных файлов |
files[].path | string | Да | Путь к исходному файлу относительно корня репозитория |
files[].target | string | Да | Целевая директория в проекте потребителя |
Распределение типов компонентов
Реестр содержит 18 компонентов двух типов:| Тип | Количество | Компоненты |
|---|---|---|
registry:ui | 15 | Title, Text, Stack, Sheet, Image, Icon, Group, Grid, Container, Card, Button, Box, Block, Badge, Accordion |
registry:layout | 3 | SplitBlock, LayoutBlock, DashLayout |
Пример записи компонента
Компонент Button демонстрирует минимальную запись реестра:Классификация зависимостей
Реестр отслеживает две категории зависимостей для каждого компонента:Зависимости времени выполнения
Компоненты объявляют зависимости времени выполнения, которые должны быть установлены в приложении потребителя:| Зависимость | Используется в | Назначение |
|---|---|---|
react | Все компоненты | Основная библиотека React |
lucide-react | Sheet, Accordion | Компоненты иконок (ChevronRight, X) |
react-resizable-panels | DashLayout | Система макета с изменяемыми панелями |
class-variance-authority, clsx и tailwind-merge являются зависимостями уровня пакета, определенными в package.json48-53 и не отслеживаются для каждого компонента.
Зависимости разработки
МассивdevDependencies присутствует во всех записях, но обычно пуст, поскольку зависимости разработки управляются на уровне пакета в package.json59-66
Источники: src/registry.json8-10 src/registry.json54-56 src/registry.json266-268 package.json48-53
Сопоставление путей к файлам
Каждая запись компонента сопоставляет исходные файлы с целевыми директориями в проекте потребителя:Структура целевых директорий
| Целевая директория | Назначение | Компоненты |
|---|---|---|
components/ui | UI-компоненты | 15 компонентов (Button, Card и т.д.) |
layouts | Шаблоны макетов | 3 компонента (DashLayout, LayoutBlock, SplitBlock) |
Диаграмма сопоставления файлов
Генерация реестра
Реестр генерируется и поддерживается с помощью инструмента CLIbuildy-ui:
Команда Scan
Скриптscan в package.json26 выполняет сканер buildy-ui:
- Сканирует директории компонентов (
src/components/ui/,src/layouts/) - Извлекает метаданные компонентов из исходных файлов
- Определяет зависимости путем анализа импортов
- Обновляет src/registry.json1-281 текущими метаданными
- Устанавливает временную метку
lastUpdatedна текущее время ISO 8601
Команда Build Registry
Скриптbuild:r в package.json27 генерирует артефакты для распространения:
packages/registry/ для программного доступа.
Источники: package.json27-28
Интеграция с методами установки
Реестр поддерживает четыре различных паттерна установки:Сравнение методов установки
| Метод | Команда | Использование реестра | Случай использования |
|---|---|---|---|
| Полная библиотека | npm install @ui8kit/core | Не используется (устанавливает весь пакет) | Комплексные проекты |
| По компонентам | npx buildy-ui add button | Читает метаданные для выборочной установки | Оптимизация бандла |
| Программный доступ | import registry from 'registry.json' | Прямой доступ к JSON | Инструменты/автоматизация |
| Git Submodule | git submodule add | Не используется (клонирует исходники) | Архитектуры монорепозитория |
Поток установки по компонентам
Программный доступ к реестру
Приложения могут импортировать JSON реестра для автоматизации и инструментов:Структура данных реестра
Пример использования
Покрытие компонентов
Реестр обеспечивает полное покрытие иерархии компонентов библиотеки:Инвентаризация компонентов по слоям
Обслуживание реестра
Управление версиями
Реестр использует семантическое версионирование независимо от версии пакета:- Версия реестра: src/registry.json278 - В настоящее время “1.0.0”
- Версия пакета: package.json3 - В настоящее время “0.1.8”
Временная метка последнего обновления
ПолеlastUpdated в src/registry.json279 записывает время последнего изменения в виде строки ISO 8601:
npm run scan.
Источники: src/registry.json278-281 package.json3 package.json26
Распространение реестра
Реестр распространяется через два канала:Распространение через NPM пакет
JSON реестра включен в NPM пакет через полеfiles в package.json39-42:
Отдельный пакет реестра
Скриптpublish в package.json28 публикует отдельный пакет реестра:
Интеграция с конвейером сборки
Реестр взаимодействует с другими системами времени сборки:Резюме
Реестр компонентов служит единым источником истины для метаданных компонентов в@ui8kit/core. Он обеспечивает:
- Установку по компонентам через
npx buildy-ui add [component] - Программный доступ для инструментов и автоматизации
- Отслеживание зависимостей для выборочных установок
- Сопоставление путей к файлам от источника к целевым директориям
- Классификацию компонентов по типу (UI vs Layout)
buildy-ui scan и распространяется через NPM вместе со скомпилированным пакетом.
Источники: src/registry.json1-281 README.md251-276 package.json26-28