2026-07-11 07:00:59 +03:00
# Программный API
2026-07-11 09:26:43 +03:00
[← Главная ](../../README_RU.md )
2026-07-11 07:00:59 +03:00
2026-07-13 20:07:42 +03:00
Пакет распространяется как ESM и предоставляет единый Node.js API генерации. React runtime с `SpriteViewer` находится в отдельной точке входа `@gromlab/svg-sprites/react` .
2026-07-11 07:00:59 +03:00
2026-07-13 20:07:42 +03:00
## `generateSprite`
2026-07-11 07:00:59 +03:00
```ts
2026-07-13 20:07:42 +03:00
import { generateSprite } from '@gromlab/svg -sprites'
2026-07-11 07:00:59 +03:00
2026-07-13 20:07:42 +03:00
const result = await generateSprite(
'src/ui/file-manager/svg-sprite/svg-sprite.config.ts',
2026-07-11 07:00:59 +03:00
)
```
2026-07-13 20:07:42 +03:00
Первый аргумент принимает полный путь к config-файлу с любым именем и расширением `.ts` , `.js` или `.json` . Каталог вместо файла включает config-less режим: корнем sprite-модуля становится этот каталог.
2026-07-11 07:00:59 +03:00
2026-07-13 20:07:42 +03:00
Второй аргумент содержит необязательные overrides и всегда имеет приоритет над конфигом:
2026-07-11 07:00:59 +03:00
```ts
2026-07-13 20:07:42 +03:00
await generateSprite('src/ui/file-manager/svg-sprite/custom-config.json', {
mode: 'react@webpack ',
name: 'documents',
inputFolder: './assets',
inputFiles: ['../../shared/search.svg'],
transform: {
addTransition: false,
},
generatedNotice: false,
})
2026-07-11 07:00:59 +03:00
```
2026-07-13 20:07:42 +03:00
Порядок разрешения настроек:
2026-07-11 07:00:59 +03:00
2026-07-13 20:07:42 +03:00
```text
defaults → config → API overrides
2026-07-11 07:00:59 +03:00
```
2026-07-13 20:07:42 +03:00
Для полностью программной генерации передайте каталог и все обязательные настройки через overrides:
2026-07-11 07:00:59 +03:00
```ts
2026-07-13 20:07:42 +03:00
await generateSprite('src/ui/file-manager/svg-sprite', {
mode: 'react@vite ',
name: 'file-manager',
inputFiles: [
'../../shared/search.svg',
'../../shared/settings.svg',
],
})
2026-07-11 07:00:59 +03:00
```
2026-07-13 20:07:42 +03:00
## Конфигурация
2026-07-11 07:00:59 +03:00
```ts
2026-07-13 20:07:42 +03:00
import { defineSpriteConfig } from '@gromlab/svg -sprites'
2026-07-11 07:00:59 +03:00
2026-07-13 20:07:42 +03:00
export default defineSpriteConfig({
mode: 'react@vite ',
2026-07-11 07:00:59 +03:00
name: 'file-manager',
description: 'Иконки файлового менеджера',
inputFolder: './icons',
2026-07-13 20:07:42 +03:00
inputFiles: ['../../shared/check.svg'],
2026-07-11 07:00:59 +03:00
transform: {
removeSize: true,
replaceColors: true,
addTransition: true,
},
generatedNotice: true,
})
```
2026-07-13 20:07:42 +03:00
`defineSpriteConfig` является identity helper для TypeScript autocomplete. JS может экспортировать тот же объект через `export default` , а JSON содержит объект непосредственно.
## Специализированные обёртки
2026-07-11 07:00:59 +03:00
2026-07-13 20:07:42 +03:00
Специализированные функции доступны как обёртки над `generateSprite` :
2026-07-11 07:00:59 +03:00
```ts
2026-07-13 20:07:42 +03:00
import { generateNextSprite, generateReactSprite } from '@gromlab/svg -sprites'
2026-07-11 07:00:59 +03:00
2026-07-13 20:07:42 +03:00
await generateReactSprite('path/to/config.ts', 'vite')
await generateNextSprite('path/to/config.ts', {
router: 'app',
bundler: 'turbopack',
2026-07-11 07:00:59 +03:00
})
```
2026-07-13 20:07:42 +03:00
Явно переданный target перекрывает `mode` из файла. Для нового кода используйте `generateSprite` .
2026-07-11 07:00:59 +03:00
2026-07-13 20:07:42 +03:00
## Config API
2026-07-11 07:00:59 +03:00
```ts
2026-07-13 20:07:42 +03:00
import {
loadSpriteConfig,
resolveSpriteConfig,
validateSpriteConfig,
} from '@gromlab/svg -sprites'
2026-07-11 07:00:59 +03:00
```
2026-07-13 20:07:42 +03:00
- `loadSpriteConfig(file)` загружает явно указанный `.ts` , `.js` или `.json` файл.
- `validateSpriteConfig(value)` выполняет runtime-валидацию объекта.
- `resolveSpriteConfig(root, config, overrides)` объединяет значения, добавляет defaults и разрешает пути относительно `root` .
2026-07-11 07:00:59 +03:00
2026-07-13 20:07:42 +03:00
## Низкоуровневый compiler
2026-07-11 07:00:59 +03:00
```ts
import {
compileSprite,
compileSpriteContent,
createShapeTransform,
} from '@gromlab/svg -sprites'
```
2026-07-13 20:07:42 +03:00
Эти функции предназначены для собственного orchestration. Стандартная генерация должна выполняться через `generateSprite` .
2026-07-11 07:00:59 +03:00
2026-07-13 20:07:42 +03:00
## React runtime
2026-07-11 07:00:59 +03:00
```tsx
import { SpriteViewer } from '@gromlab/svg -sprites/react'
```
2026-07-13 20:07:42 +03:00
`SpriteViewer` принимает generated manifests, lazy loaders или результат `import.meta.glob` . Эта точка входа содержит `'use client'` и предназначена для debug-инструментов; production-компоненты импортируются из локальных sprite-модулей приложения.