feat: выпустить версию 1.0.0

- добавлены отдельные режимы генерации для React, Next.js и legacy
- добавлены SpriteViewer, типизированные компоненты и безопасный codegen
- перенесена сборка AI-скила и обновлена документация
- добавлены migration guide, лицензии и проверки публикации
This commit is contained in:
2026-07-11 07:00:59 +03:00
parent 3a60b5c6ae
commit 05a0a9f7ed
76 changed files with 9456 additions and 1033 deletions

View File

@@ -1,67 +0,0 @@
import path from 'node:path'
import { resolveSprites } from './scanner.js'
import { compileSprite } from './compiler.js'
import { generateReactModule } from './codegen-react.js'
import { generatePreview } from './preview.js'
import { log } from './logger.js'
import type { SvgSpritesConfig, SpriteResult } from './types.js'
/**
* Генерирует SVG-спрайты из конфига.
*
* Основная точка входа — используется и из CLI, и из программного API.
*/
export async function generate(config: SvgSpritesConfig): Promise<SpriteResult[]> {
const {
output,
publicPath,
preview = true,
react,
transform = {},
sprites,
} = config
const outputDir = path.resolve(output)
log.title('Resolving sprites...')
const folders = resolveSprites(sprites)
if (folders.length === 0) {
log.warn('No sprites to generate.')
return []
}
log.info(`Found ${folders.length} sprite(s)\n`)
const results: SpriteResult[] = []
for (const folder of folders) {
const spritePath = await compileSprite(folder, outputDir, transform)
log.success(` [${folder.mode}] ${folder.name}${path.relative(process.cwd(), spritePath)} (${folder.files.length} icons)`)
results.push({
name: folder.name,
mode: folder.mode,
spritePath,
iconCount: folder.files.length,
})
}
if (react) {
const reactDir = path.resolve(react)
const resolvedPublicPath = publicPath ?? `/${output}`
const iconPath = generateReactModule(results, folders, reactDir, resolvedPublicPath)
log.success(` [react] → ${path.relative(process.cwd(), iconPath)}`)
}
if (preview) {
const previewPath = generatePreview(results, outputDir)
log.success(`\n [preview] → ${path.relative(process.cwd(), previewPath)}`)
}
console.log('')
log.success(`Done! Generated ${results.length} sprite(s).`)
return results
}