Невозможно использовать SVG в качестве модулей для приложения Next JS и Storybook, импортированных с абсолютными путями. Со многими опробованными установками я смог импортировать SVG либо в Next, либо в Storybook, но не в оба. Я использовал эту настройку для babel-plugin-inline-react-svg
:
// .babelrc
{
...
"plugins": [
...
"inline-react-svg"
]
}
С этим плагином Storybook не требует какой-либо конфигурации, и этот пример кода работает должным образом:
import Wrapper from '../../../components/Wrapper';
import IconSVG from '../../../icons/sandwich.svg';
export const WrappedSVG = () => (
<Wrapper>
<IconSVG />
</Wrapper>
);
Но следующее не :
import Wrapper from 'components/Wrapper';
import IconSVG from 'icons/sandwich.svg';
export const WrappedSVG = () => (
<Wrapper>
<IconSVG />
</Wrapper>
);
Обрабатывается оболочка, но не значок: Cannot find module
Здесь svgr
setup:
// next.config.js
module.exports = {
webpack(config, options) {
...
config.module.rules.push({
test: /\.svg$/,
use: ['@svgr/webpack'],
});
return config;
},
};
// .storybook/main.js
module.exports = {
...
webpackFinal: async config => {
...
config.module.rules.unshift({
test: /\.svg$/,
use: ['@svgr/webpack'],
});
return config;
},
}
Эта конфигурация отлично работает на стороне приложения, но в Storybook я получаю DOMException: "String contains an invalid character"
Мой npm run dev
скрипт такой: ts-node --project tsconfig.server.json src/server.ts
(через nodemon
).
Я надеюсь, что кто-то даст Подсказка, как заставить абсолютный импорт компонентов SVG работать как для Next JS, так и для Storybook.