Files
svg-sprites/docs/ru/guides/preact-webpack.md
S.Gromov 8b3365f957 feat: добавить поддержку 20 framework exact modes
Добавлены exact modes:
- vue@vite и vue@webpack
- nuxt@vite и nuxt@webpack
- svelte@vite, svelte@webpack и sveltekit@vite
- angular@application и angular@webpack
- astro@vite
- solid@vite, solid@webpack и solid-start@vite
- preact@vite и preact@webpack
- qwik@vite
- lit@vite и lit@webpack
- alpine@vite и alpine@webpack

Для каждого mode реализованы изолированный adapter, нативный
framework-компонент, declarations, manifest, CSS и внешний asset URL.

Добавлены production integration-стенды с генерацией, typecheck,
сборкой и Playwright-проверкой рендера спрайта и Viewer.

Обновлены Viewer, RU/EN-гайды, README, technical reference и AI skills.
Итоговая матрица включает 29 exact modes.

Проверки:
- 48 unit-тестов
- 29 integration E2E-тестов
2026-07-15 16:56:44 +03:00

76 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# SVG-спрайт для Preact на Webpack
Инструкция по быстрому созданию SVG-спрайта в Preact-приложении на Webpack 5.
## Генерация спрайта
Выберите каталог для будущего SVG-спрайта, например `assets/app-icons`, и создайте в нём `svg-sprite.config.json`. В `input` укажите путь к существующим SVG относительно файла конфигурации. Перемещать или копировать иконки не требуется.
```json
{
"mode": "preact@webpack",
"name": "app",
"input": "../svg-icons/**/*.svg"
}
```
Пакет не нужно добавлять в зависимости проекта. Запускайте его через `npx` перед запуском и сборкой Webpack:
```json
{
"scripts": {
"sprites": "npx --yes @gromlab/svg-sprites assets/app-icons/svg-sprite.config.json",
"predev": "npm run sprites",
"dev": "webpack serve --mode development",
"prebuild": "npm run sprites",
"build": "tsc --noEmit && webpack --mode production"
}
}
```
## Использование спрайта
Создайте `assets/app-icons/index.js` и `assets/app-icons/index.d.ts` с одинаковым экспортом:
```js
export * from './.svg-sprite/index.js'
```
Используйте сгенерированный Preact-компонент:
```jsx
import { AppIcon } from '../assets/app-icons/index.js'
export function SaveIcon() {
return (
<AppIcon
icon="icon-name"
width={24}
height={24}
aria-label="Готово"
style={{ color: '#334155', '--icon-color-2': '#f59e0b' }}
/>
)
}
```
Webpack Asset Modules выпускают `sprite.svg` из сгенерированного выражения `new URL(...)`.
## Дебаг и превью
Установите Viewer только для разработки:
```bash
npm install --save-dev @gromlab/svg-sprites
```
Подключите его в отдельной development entry:
```js
import '@gromlab/svg-sprites/viewer/element'
const viewer = document.createElement('gromlab-sprite-viewer')
viewer.sources = [() => import('../assets/app-icons/.svg-sprite/svg-sprite.manifest.js')]
document.body.append(viewer)
```