Перейти к содержимому

SVGR

https://react-svgr.com/docs/next/

Окно терминала
pnpm add -D @svgr/webpack
globals.d.ts
declare module "*.svg?react" {
import * as React from "react";
const ReactComponent: React.FunctionComponent<
React.ComponentProps<"svg"> & {
title?: string;
titleId?: string;
desc?: string;
descId?: string;
}
>;
export default ReactComponent;
}
tsconfig.json
{
"include": [
"next-env.d.ts",
"**/*.ts",
"**/*.tsx",
".next/types/**/*.ts",
"globals.d.ts"
]
}
.storybook/main.ts
const config: StorybookConfig = {
webpackFinal: async (config) => {
config.module = config.module || {};
config.module.rules = config.module.rules || [];
// This modifies the existing image rule to exclude .svg files
// since you want to handle those files with @svgr/webpack
const imageRule = config.module.rules.find((rule) =>
rule?.["test"]?.test(".svg")
);
if (imageRule) {
imageRule["exclude"] = /\.svg$/;
}
// Configure .svg files to be loaded with @svgr/webpack
config.module.rules.push({
test: /\.svg$/,
use: ["@svgr/webpack"],
});
return config;
},
};