@kaspersky/icons
v2.3.0
Published
Kaspersky Design System Icon Pack
Maintainers
Readme
@kaspersky/icons
Этот npm пакет - отдельная библиотека иконок, которую вы можете использовать в своих проектах.
Библиотека иконок имеет две основные реализации:
- со стороны Design System: svg пак иконок в Figma. Обновлением иконок в Figma и поддержкой пака иконок в актуальном состоянии занимается команда дизайнеров DRO.
- со стороны UI Kit: npm пакет содержащий все иконки из дизайн системы. Поддержкой npm пакета иконок @kaspersky/icons занимается команда разработки UIF.
- StoryBook
Установка
npm install @kaspersky/icons
yarn add @kaspersky/icons Установка зависимостей:
npm install Использование в проекте
Import:
import { AccountIdentity } from '@kaspersky/icons/24'
import { AccountLogin, Like } from '@kaspersky/icons/24'const { AccountIdentity } = require('@kaspersky/icons/24')Props:
| Name | Type | Default |
| ------------- |:-----------------------------------------: | ---------------------------- |
| color | string | 'currentColor' |
Example:
`<AccountIdentity />`
`<AccountIdentity color="red"/>`
`<AccountIdentity data-testid="test-icon"/>`Обновление иконок внутри npm пакета (ручной режим):
- Скачиваем актуальный пак svg иконок из Figma с группировкой по размерам
- Не выделяя листов или иконок, нажимаем в сайдбаре справа на кнопку Export
- В пункте Presets нажимаем на плюс +
- В раскрывшимся меню выбираем формат иконок SVG
- Нажимаем кнопку "Export Library - Icons"
- Копируем svg иконки в папку src/iconsSources
- Запускаем скрипт для трансформации svg иконок в React компоненты: npm run icons:prepare (комплексная команда, которая работает в автоматическов режиме, расширенный список команд в разделе Команды package.json)
- В папке iconsSVGs должны появится svg файлы с правильными именами, остальные этапы сборки происходят в PR.
- Создаём PR. Все сборки проходят автоматически
Команды package.json
Базовые команды:
"iconsArtifacts:clean": удаление всех разультатов сборки rollup"icons:clean": удаление автогенерированных файлов библиотекой svgr"iconsSVGs:clean": удаления svg файлов с подготовленными именами"icons:prepare": Подготовка исходников svg файлоа"icons:transform": запуск трансформации svg иконок в компоненты react"icons:updateImports": обновление импортов для сборки"icons:create": генерация файлов с помощью svgr"icons:build": полная сборка пакета с удалением всех генерируемых файлов
Вспомогательные команды:
"svgr:help": справка по командам и опциям svgr"rollup:help": справка по командам и опциям rollup"lint": проверить код иконки на ошибки"lint:fix": проверить код иконки на ошибки и автоматически исправить
Сборка пакета:
Может производиться двумя способами:
- Запускаем скрипт npm run
icons:create, после трансформации svg иконок в React компоненты запускаем сборку пакета скриптом npm runicons:build - Запуск трансформации svg иконок и сборки пакета одной командой npm run
build
В корне проекта будет находится готовая сборка пакета (production build) в 2 основных форматах: commonjs и es6
Конфигурационные файлы:
SVGR:
@kaspersky/icons использует SVRG cli (https://react-svgr.com/) для трансформации svg иконок из Figma в React компонент.
SVGR предварительно оптимизирует и сжимает размер svg иконки через инструмент SVGO в автоматическом режиме, затем генерирует React компонент с svg иконкой при помощи Babel шаблонов и форматирует код с помощью Prettier. На выходе мы получаем готовый компонент.
Настройка svgr производится либо через параметры командой строки и через конфигурационный файл svgr.config.js (предпочтительный вариант для удобства чтения) Конфигурационный файл лежит в корневой директории src.
Настройка шаблона экспорта иконки производится внутри файла шаблона templateIcons.js Файл шаблона лежит в корневой директории src.
Параметры cli строки:
--config-file ./svgr.config.js: путь к конфигурационному файлу--out-dir src -- ./src/iconsSources: установка input (icons) и output (src) директорий
Конфигурационный файл svgr.config.json основные опции:
typescript: генерирует выходной файл в формате .tsxreplace-attr-values: заменяет значения атрибутов внутри svgtemplate: путь к файлу шаблона экспорта компонентов
Rollup:
@kaspersky/icons использует сборщик Rollup (https://rollupjs.org/)
При запуске команды сборки пакета, бандлер создаст директорию build с двумя подпапками для каждой сборки: cjs (CommonJS) и esm (ES Module) Конфигурационный файл для настройки rollup.config.js Конфигурационный файл лежит в корневой директории src.
