【发布时间】:2020-04-10 23:01:41
【问题描述】:
我在我的项目中使用带有 CRA preset 的 Storybook 并在本地运行 Storybook。我想在我的故事书中使用命名空间导入以获得更好的开发者体验:
// this is more convenient
import { ArrowForward, Star } from '@material-ui/icons';
// than this
import ArrowForward from '@material-ui/icons/ArrowForward'
import Star from '@material-ui/icons/Star'
它似乎在构建过程中正确地摇树 - 两种方法产生相同的包大小。
但是,当通过 yarn storybook 在本地运行故事书时,从聚合命名空间导入:
import { ArrowForward, Star } from '@material-ui/icons'
导致构建时间增加大约 20 秒。
我尝试使用 material ui guide 中的两个 tree-shaking 插件和 projectRoot/.storybook.babelrc.js 中的建议配置,但没有运气。
它肯定会处理.babelrc.js,因为那里的无效语法会破坏构建。但是它仍然会加载所有图标。
是否有可能让它在 CRA 中工作?
【问题讨论】:
-
在同一个链接中似乎有一节介绍如何让它与 CRA 一起工作
-
据我了解,这适用于您想要在 CRA 构建中进行 tree-shake,而不是 Storybook。它说“如果你正在使用 Create React App,你将需要使用几个项目来让你使用 .babelrc 配置,而不会弹出。”。但 Storybook 似乎用它的自定义 .babelrc.js 文件为我解决了这个问题。
-
另外,我看不出修改
yarn start脚本以使用react-app-rewired 会如何影响运行yarn storybook的结果
标签: reactjs create-react-app storybook tree-shaking