Haf*_*uri 5 reactjs storybook tsdx
我添加@storybook/preset-create-react-app
到我的插件中,因为我希望故事书能够与 React/CRA 一起使用。基本上,我尝试以与 CRA 相同的方式导入 SVG。
import SomeSvgStaticUrl, { ReactComponent as SomeSvgReactComponent } from '../assets/icons/some-icon.svg';
Run Code Online (Sandbox Code Playgroud)
SomeSvgStaticUrl
- 默认情况下工作正常(返回字符串静态 URL,与 一起工作正常<img src={SomeSvgStaticUrl} />
,但不是我想要的)
SomeSvgReactComponent
-undefined
默认情况下
因此,我决定更新 webpack 配置以添加 SVG 加载器,
import SomeSvgStaticUrl, { ReactComponent as SomeSvgReactComponent } from '../assets/icons/some-icon.svg';
Run Code Online (Sandbox Code Playgroud)
就像故事书的魅力一样,但默认导入(SomeSvgStaticUrl
在本例中),它返回 ReactComponent 而不是静态 URL。并且SomeSvgReactComponent
是undefined
。没问题,但是当主机应用程序使用具有默认 React/CRA 配置的包时,它不起作用。主机应用程序获取以下内容,
SomeSvgStaticUrl
- 静态网址
SomeSvgReactComponent
- 反应组件
如果我从包中删除 SVG 加载器,它在主机应用程序上可以正常工作,但在故事书上则不行。当我保留 SVG 加载器时,它可以与故事书一起正常工作,但不能与主机应用程序一起工作。
我真的不想强制所有主机应用程序通过其 webpack 配置使用相同的 SVG 加载器。有什么帮助可以帮助您做什么或者让故事书 SVG 加载器以与 React/CRA 加载器相同的方式工作的最佳方法是什么?
套餐详情
webpackFinal: async config => {
console.log(config.module.rules);
// const assetRule = config.module.rules.find(({ test }) => test.test(".(svg"));
// const assetLoader = {
// loader: assetRule.loader,
// options: assetRule.options || assetRule.query
// };
config.module.rules.unshift({
test: /\.svg$/,
use: ['@svgr/webpack'] // ['@svgr/webpack', assetLoader],
});
config.module.rules = [{ oneOf: config.module.rules }];
return config;
},
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3457 次 |
最近记录: |