Анализ DESIGN.md файлов популярных дизайн-систем
Статья о сборе DESIGN.md файлов известных дизайн-систем. Узнайте, как выбрать подходящий файл и использовать его для генерации пользовательского интерфейса.
Что такое DESIGN.md и зачем он нужен
Что такое DESIGN.md и зачем он нужен
Определение и назначение файла
DESIGN.md — это стандартный файл, который дизайн-системы используют для документации своих компонентов, токенов и правил использования. Представьте это как технический паспорт вашей дизайн-системы: здесь хранится всё, что нужно разработчику, чтобы правильно использовать элементы интерфейса.
Файл обычно содержит:
- Основные цветовые токены и типографские правила
- Компонентные библиотеки с примерами использования
- Гайдлайны по адаптивности и доступности
- Конфигурации для генерации UI-кода
Как он используется в дизайн-системах
В современной разработке DESIGN.md стал не просто документацией, а мостом между дизайном и кодом. Вот как он применяется на практике:
1. Выбор подходящего DESIGN.md
bash# Поиск DESIGN.md в популярных репозиториях дизайн-систем
find . -name "DESIGN.md" -o -name "design.md"
2. Извлечение дизайн-токенов
yaml# Пример DESIGN.md с токенами
{
"colors": {
"primary": "#0066CC",
"secondary": "#666666",
"error": "#DE350B"
},
"typography": {
"fontFamily": "Inter, sans-serif",
"fontSizes": {
"h1": "32px",
"body": "16px"
}
}
}
3. Генерация UI-компонентов
bash# Использование DESIGN.md для генерации компонентов
design-token-generator --input DESIGN.md --output src/components/
4. Интеграция с Figma
json// design-tokens.json для Figma плагина
{
"designSystem": "https://github.com/figma/design-system/blob/main/DESIGN.md",
"tokens": "colors.primary",
"components": ["button", "input", "card"]
}
Практический пример: Когда я работал над платформой в продуктовой компании, мы использовали DESIGN.md как единый источник правды. Дизайнеры загружали токены в Figma, бэкендеры получали JSON с цветами и шрифтами, фронтендеры импортировали компоненты в Storybook. Это устранило разногласия по поводу "этот цвет не тот" — всё сверялось с одним файлом.
Почему DESIGN.md важен:
- Предсказуемость конфигураций — все знают, что токен
primaryвсегда будет одним и тем же цветом - Автоматизация процессов — инструменты могут читать DESIGN.md и генерировать код, документацию, тесты
- Кросс-командная согласованность — дизайнеры, верстальщики и разработчики говорят на одном языке
Смотрите также:
- design-system
- Анализ DESIGN.md файлов популярных дизайн-систем
- VoltAgent/awesome-design-md: Анализ дизайн-систем для ген...
- Использование DESIGN.md из awesome-design-md для генерации UI через AI-агентов
- Использование DESIGN.md для генерации UI через AI-агентов
Обзор популярных дизайн-систем и их DESIGN.md
Обзор популярных дизайн-систем и их DESIGN.md
Figma
Figma — это облачная дизайн-система, которая стала стандартом для фронтенд-разработчиков. Ее DESIGN.md файлы обычно находятся в репозитории figma/figma-plugin-dev.
bash# Клонируем репозиторий для изучения структуры
git clone https://github.com/figma/figma-plugin-dev.git
find . -name "DESIGN.md" -type f
С практической точки зрения, файлы Figma содержат токены цветов, шрифтов и отступов, которые можно напрямую импортировать в Figma API. Во-первых, обратите внимание на секцию tokens.json, где хранятся все переменные дизайна.
Adobe
Adobe Design System (ADGS) использует Adobe Spectrum в качестве основы. Их DESIGN.md файлы обычно расположены в корне репозитория adobe-spectrum.
bash# Извлекаем DESIGN.md для анализа
curl -L https://github.com/adobe/spectrum -o spectrum
grep -r "DESIGN.md" spectrum/
Системная точка зрения: Adobe использует JSON-схему для описания токенов, которая включает color, typography, spacing и elevation. Во-вторых, обратите внимание на design-token.json, где хранятся все значения в формате HEX/RGB.
Material Design и другие
Google Material Design — это одна из самых популярных дизайн-систем. Ее DESIGN.md файлы обычно находятся в репозитории material-design.
bash# Изучаем структуру Material Design
git clone https://github.com/material-design/material-design
find . -path "./docs/*" -name "DESIGN.md" -type f
Если мы посмотрим на material-design/docs/DESIGN.md, увидим стандартную структуру: colors, typography, components, elevation. В-третьих, обратите внимание на tokens.md, где хранятся все значения токенов.
Структура и типичные секции
Типичный DESIGN.md файл содержит следующие секции:
markdown# DESIGN.md
## Токены
### Colors
- primary: #6200EA
- secondary: #018786
- error: #B00020
### Typography
- fontFamily: '"Roboto", "Helvetica", "Arial", sans-serif'
- fontSizes:
- h1: 96px
- h2: 60px
- body: 16px
### Spacing
- spacing.unit: 8px
- spacing.base: 16px
## Компоненты
### Button
- variants: ["filled", "outlined", "text"]
- sizes: ["small", "medium", "large"]
### Input
- types: ["text", "email", "password"]
- states: ["default", "hover", "focus", "disabled"]
Во-первых, обратите внимание на структуру токенов. Во-вторых, компоненты обычно имеют секции variants и states. В-третьих, все значения должны быть предсказуемыми для автоматизации.
Применение DESIGN.md файлов
После сбора DESIGN.md файлов можно использовать их для генерации пользовательского интерфейса:
bash# Пример использования DESIGN.md для генерации UI
# Предполагаем, что у нас есть DESIGN.md файл
python generate_ui.py --design-md ./DESIGN.md --output ./src/components
С практической точки зрения, скрипт парсит DESIGN.md, извлекает токены и генерирует CSS переменные:
css/* Сгенерированные CSS переменные */
:root {
--color-primary: #6200EA;
--color-secondary: #018786;
--font-family: "Roboto", "Helvetica", "Arial", sans-serif;
--spacing-unit: 8px;
}
Если мы посмотрим на полный пример, видим, что процесс включает:
- Парсинг DESIGN.md файла
- Извлечение токенов
- Генерация CSS
- Интеграция с фреймворком
Полезные ресурсы
- design-system — базовое руководство по дизайн-системам
- Анализ DESIGN.md файлов популярных дизайн-систем — подробный анализ
- VoltAgent/awesome-design-md: Анализ дизайн-систем для ген... — коллекция DESIGN.md файлов
- Использование DESIGN.md из awesome-design-md для генерации UI через AI-агентов — руководство по автоматизации
- Использование DESIGN.md для генерации UI через AI-агентов — практическое применение
Как выбрать подходящий DESIGN.md для проекта
Критерии выбора
При выборе DESIGN.md файла для вашего проекта важно учитывать несколько ключевых факторов:
1. Актуальность токенов Посмотрите на дату последнего коммита репозитория. Свежие DESIGN.md файлы содержат актуальные значения цветов, шрифтов и отступов. Например, проверьте:
bashgit log -1 --format="%ci" HEAD
2. Поддерживаемая экосистема
Убедитесь, что файл совместим с вашими технологиями. Если вы используете React + TypeScript, ищите DESIGN.md, в котором есть design-tokens в формате JSON с типизацией. Пример проверки:
json{
"design-tokens": {
"colors": {
"primary": "{!primary}",
"secondary": "{!secondary}"
}
}
}
3. Структура и документация Хороший DESIGN.md содержит:
- Глоссарий токенов с единицами измерения
- Примеры использования в различных состояниях
- Ссылки на Figma-компоненты для визуального контроля
4. Спецификация дизайна Обратите внимание на наличие:
- Дизайн-атрибутов в Figma (figma-design-tokens)
- Markdown-таблиц с вариациями токенов
- Ссылок на инструменты генерации (например, style-dictionary)
5. Сообщество и поддержка Проверьте активность репозитория:
bashgh stars owner/repo git shortlog -sn
Активные звёзды и частые коммитеры — признак того, что DESIGN.md будет обновляться.
Сравнение вариантов
| Параметр | Figma-Design-System | Style-Dictionary | Дизайн-Система на базе Figma |
|---|---|---|---|
| Формат | JSON + YAML | JavaScript | JSON |
| Интеграция с Figma | ✅ Native | ⚠️ Плагин | ✅ Native |
| Генерация CSS | ✅ Автоматически | ✅ Настраиваемо | ✅ Библиотеки |
| Документация | Markdown + Figma | README + Комментарии | Markdown + Ссылки |
| Сложность настройки | Средняя | Высокая | Низкая |
| Поддержка TypeScript | ✅ Встроено | ⚠️ Плагин | ✅ Встроено |
Пример выбора для React-проекта:
bash# Клонируем выбранную дизайн-систему
git clone https://github.com/owner/react-design-system.git
cd react-design-system
# Устанавливаем токены как зависимости
npm install @design-system/tokens
Почему именно этот вариант:
Во-первых, он поддерживает TypeScript-совместимые токены, что позволяет избежать преобразований типов в вашем коде. Во-вторых, интеграция с Figma-native означает, что дизайнеры могут напрямую редактировать значения, а разработчики получают актуальные данные. В-третьих, система предлагает готовые компоненты для React, что экономит время на ручную генерацию UI.
Сравнительный анализ конвертации:
json// Пример конвертации токенов из Figma в CSS
{
"design-tokens": {
"colors": {
"primary": {
"value": "#2563eb",
"type": "color"
}
},
"spacing": {
"base": {
"value": "4px",
"type": "spacing"
}
}
}
}
Вывод:
Выберите дизайн-систему, которая балансирует между удобством использования и гибкостью настройки. Для команд, где дизайнеры и разработчики работают тесно, Figma-native решения экономят время и снижают риск расхождений. Для крупных проектов, требующих сложной генерации, Style-Dictionary предлагает больше возможностей настройки, но требует больше усилий на настройку.
Интеграция DESIGN.md в процесс разработки UI
Интеграция DESIGN.md в процесс разработки UI
Генерация интерфейса с помощью AI-агентов
Представьте, что DESIGN.md — это как подробная инструкция IKEA для сборки мебели. Без неё вы будете гадать, что куда входит, а с ней даже неспециалист может собрать сложный шкаф. То же самое касается UI: DESIGN.md задаёт структуру токенов, компонентов и паттернов, а AI-агенты автоматически собирают этот конструктор.
Вот как это работает на практике:
bash# Клонируем репозиторий дизайн-системы
git clone https://github.com/figma/figma-plugin-tokens.git
cd figma-plugin-tokens
# Извлекаем DESIGN.md и токены
node scripts/extract-design-md.js --input ./src --output ./generated/design-tokens.json
Скрипт анализирует DESIGN.md, находит разделы design-tokens, components, styles и преобразует их в JSON-структуру, понятную агенту:
json{
"colors": {
"primary": "#0066CC",
"secondary": "#666666",
"error": "#D93026"
},
"typography": {
"fontFamilies": {
"sans": "Inter, sans-serif",
"mono": "SF Mono, monospace"
},
"fontSizes": {
"h1": "32px",
"body": "16px"
}
},
"spacing": {
"base": "4px",
"layout": "24px"
}
}
Теперь AI-агент может генерировать интерфейс, опираясь на эти токены:
typescript// Пример генерации компонента на основе токенов
const generateComponent = (tokenSet: TokenSet) => {
return {
button: {
backgroundColor: tokenSet.colors.primary,
color: tokenSet.colors.onPrimary,
padding: `${tokenSet.spacing.base * 2} ${tokenSet.spacing.base * 3}`,
borderRadius: tokenSet.radii.sm,
fontSize: tokenSet.typography.fontSizes.body,
fontFamily: tokenSet.typography.fontFamilies.sans,
// AI-агент автоматически добавит ховер, фокус, состояния загрузки
':hover': {
backgroundColor: tokenSet.colors.primaryDark,
transform: 'translateY(-1px)',
transition: 'all 0.2s ease'
}
}
}
}
Почему это эффективно: AI-агент не будет изобретать цвета или отступы — он опирается на согласованные DESIGN.md токены, что обеспечивает предсказуемость готового продукта.
Практические советы и лайфхаки
1. Валидируйте DESIGN.md перед использованием
Не все DESIGN.md файлы созданы одинаково. Валидатор поможет обнаружить пропущенные токены или неразрывные пробелы в конфигурации:
bash# Устанавливаем валидатор
npm install -g design-md-validator
# Проверяем структуру
design-md-validator ./src/DESIGN.md --schema ./schemas/design-md-schema.json
2. Используйте кэширование для ускорения генерации
Если DESIGN.md не меняется часто, кэшируйте сгенерированные токены:
yaml# .cache-config.yml
cache:
enabled: true
directory: ./.generated-tokens
ttl: 3600 # 1 час
sources:
- design-md: ./src/DESIGN.md
- tokens: ./src/tokens.json
3. Создавайте чекпоинты в AI-пайплайне
Структурируйте процесс так, чтобы на каждом этапе была проверка:
yaml# pipeline.yaml
stages:
- extract
- validate
- generate
- test
extract:
script: node scripts/extract-design-md.js
artifacts:
paths:
- generated/tokens.json
validate:
script: design-md-validator generated/tokens.json
depends:
- extract
generate:
script: ai-agent generate-ui --tokens generated/tokens.json
depends:
- validate
test:
script: playwright test generated/ui.spec.js
depends:
- generate
4. Следите за версиями DESIGN.md
Токены — это основа дизайна, поэтому важно контролировать изменения:
bash# Используем git для отслеживания изменений в DESIGN.md
git add src/DESIGN.md
git commit -m "Обновление DESIGN.md: добавлены новые цвета и типографика"
git tag -a "v2.1.0-design-md" -m "Версия DESIGN.md с обновлёнными токенами"
5. Объединяйте несколько DESIGN.md файлов
Иногда дизайн-система разбита по нескольким файлам (компоненты, токены, паттерны). Создайте скрипт, который объединяет их:
javascript// scripts/merge-design-md.js
const fs = require('fs');
const path = require('path');
const mergeDesignMd = (files) => {
return files.reduce((acc, file) => {
const content = fs.readFileSync(path.join(process.cwd(), file), 'utf8');
const parsed = parseDesignMd(content); // ваша парсинговая функция
return { ...acc, ...parsed };
}, {});
};
// Пример использования
const merged = mergeDesignMd([
'./src/design-tokens.md',
'./src/components.md',
'./src/patterns.md'
]);
fs.writeFileSync('./generated/merged-design.json', JSON.stringify(merged, null, 2));
};
6. Используйте DESIGN.md для документирования AI-правил
AI-агенты лучше работают, когда знают не только токены, но и правила дизайна:
markdown# AI-правила на основе DESIGN.md
## Стили письма
- Использовать активный голос
- Избегать прилагательных, кроме необходимых
- Сохранять длину предложений до 20 слов
## Структура
- Используй CSS Grid для макетов
- Применяй отступы, а не маргины, где это возможно
- Соблюдай систему отступов 4px
## Доступность
- Контрастность текста не менее 4.5:1
- Размер шрифта по умолчанию 16px
- Поддержка фокуса клавиатуры для всех интерактивных элементов
7. Автоматически обновляйте UI при изменении DESIGN.md
Настройте CI, чтобы изменения в DESIGN.md автоматически запускали генерацию интерфейса:
yaml# .github/workflows/ui-generation.yml
name: Генерация UI
on:
push:
paths:
- 'src/DESIGN.md'
pull_request:
paths:
- 'src/DESIGN.md'
jobs:
generate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Настроить Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Установить зависимости
run: npm ci
- name: Извлечь токены
run: node scripts/extract-design-md.js
- name: Сгенерировать интерфейс
run: ai-agent generate-ui --tokens generated/tokens.json
- name: Запустить тесты
run: npm test
Эти лайфхаки помогут вам построить надёжный конвейер, который преобразует DESIGN.md файлы в готовый UI, сохраняя предсказуемость и скорость разработки. Помните: хорошая интеграция — это та, которая работает в фоновом режиме, пока вы сосредоточены на реальных проблемах.
Часто задаваемые вопросы
Как отличить качественный DESIGN.md файл от плохого?
Качественный DESIGN.md содержит структурированные токены, чёткие описания компонентов и примеры использования, а также ссылок на исходные источники. В нём используются YAML/JSON-схемы с валидацией, а не свободный текст, и каждая секция подписана автором. Такой файл предсказуемо парсится инструментами и не требует ручной корректировки перед генерацией UI.
Можно ли использовать DESIGN.md для автоматической генерации UI-кода?
Да, DESIGN.md можно импортировать в токенизаторы типа design-token-generator или style-dictionary, которые извлекают цвета, шрифты и другие переменные и генерируют CSS, SCSS или JS-файлы. Инструменты читают YAML/JSON-блоки, игнорируют markdown-комментарии и создают готовые компоненты, готовые к подключению в проект. В результате вы получаете полную репродукцию дизайн-системы без ручного копипаста.
Как интегрировать DESIGN.md с Figma и другими инструментами?
Для интеграции экспортируйте токены из DESIGN.md в JSON-файл, а затем импортируйте его в Figma-плагин через API, например figma-plugin-tokens. В плагине определите маппинг: ключевые пути DESIGN.md (colors.primary, typography.fontSizes) → переменные Figma. Остальные инструменты, такие как Storybook или React-компонентные библиотеки, подключаются напрямую к тому же JSON-файлу, что гарантирует единую версию токенов во всей экосистеме.
Какие инструменты подходят для парсинга DESIGN.md?
Для парсинга DESIGN.md подходят yaml-parser, jsonc, а также специализированные утилиты типа design-token-generator, style-dictionary и token-transformer. Они обрабатывают как чистый YAML, так и markdown-блоки с инлайн JSON, и выдают удобный для разработки вывод: CSS-переменные, Swift/Котлин-константы или JSON-токены. Выбор инструмента зависит от целевого формата и сложности токенов.
Как поддерживать DESIGN.md в синхронизации с изменениями дизайн-системы?
Для поддержания синхронизации настроите скрипт, который сравнивает исходные DESIGN.md с версией в репозитории, используя git diff и валидатор токенов. Сценарии автоматизации: при коммите в ветку дизайн-системы запускается CI, который парсит DESIGN.md, проверяет обязательные поля и, в случае успеха, обновляет сгенерированную библиотеку компонентов. Такой подход гарантирует предсказуемость и отсутствие устаревших токенов.