2025-11-19 09:59:39 +03:00
|
|
|
|
/**
|
|
|
|
|
|
* Конфигурация SVGR loader для webpack
|
2025-11-19 10:10:16 +03:00
|
|
|
|
*
|
2025-11-19 09:59:39 +03:00
|
|
|
|
* Преобразует SVG файлы в React компоненты.
|
|
|
|
|
|
* Позволяет импортировать SVG как обычные React компоненты с возможностью
|
|
|
|
|
|
* управления их свойствами (цвет, размер и т.д.) через props.
|
2025-11-19 10:10:16 +03:00
|
|
|
|
*
|
2025-11-19 09:59:39 +03:00
|
|
|
|
* @returns {Object} Конфигурация @svgr/webpack loader
|
2025-11-19 10:10:16 +03:00
|
|
|
|
*
|
2025-11-19 09:59:39 +03:00
|
|
|
|
* @example
|
|
|
|
|
|
* import Logo from './logo.svg'
|
2025-11-19 10:10:16 +03:00
|
|
|
|
*
|
2025-11-19 09:59:39 +03:00
|
|
|
|
* function App() {
|
|
|
|
|
|
* return <Logo width={100} height={100} fill="red" />
|
|
|
|
|
|
* }
|
|
|
|
|
|
*/
|
|
|
|
|
|
export function buildSvgrLoader() {
|
|
|
|
|
|
const svgrLoader = {
|
|
|
|
|
|
test: /\.svg$/,
|
2025-11-20 12:04:08 +03:00
|
|
|
|
use: [
|
|
|
|
|
|
{
|
|
|
|
|
|
loader: '@svgr/webpack',
|
|
|
|
|
|
options: {
|
|
|
|
|
|
// Replace currentColor with props
|
|
|
|
|
|
replaceAttrValues: {
|
|
|
|
|
|
currentColor: '{props.stroke || "currentColor"}',
|
|
|
|
|
|
},
|
|
|
|
|
|
// Allow width and height to be customizable
|
|
|
|
|
|
dimensions: false,
|
|
|
|
|
|
svgoConfig: {
|
|
|
|
|
|
plugins: [
|
|
|
|
|
|
{
|
|
|
|
|
|
name: 'preset-default',
|
|
|
|
|
|
params: {
|
|
|
|
|
|
overrides: {
|
|
|
|
|
|
// Keep viewBox for proper scaling
|
|
|
|
|
|
removeViewBox: false,
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
],
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
},
|
|
|
|
|
|
],
|
2025-11-19 09:59:39 +03:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return svgrLoader
|
|
|
|
|
|
}
|