对标题的误导表示歉意,我不知道如何用一句话来解释这个问题。
这是我简化的requirejs配置的示例:
{
paths: {
...
"@material-ui/core": "http://localhost:3000/assets/vendor/@material-ui/core/material-ui.development"
...
}
}
material-ui.development.js
是一个umd捆绑包,其中包含除图标之外的material-ui所需的所有内容。
此requirejs配置是在主脚本启动时加载的,页面上加载的所有其他捆绑包(umd webpack捆绑包)都依靠这些路径来工作。
计划如下:
@material-ui/core
组件,如下所示:import { Button } from '@material-ui/core';
。并将@material-ui/core
完全外部化。
@material-ui/icons
)。可能会在多个包中包含一些重复的图标,但这可以忽略不计。将来,如果这变得不合时宜,我可以使用一组常用图标创建一个新的自定义捆绑包,以避免重复。
每个图标使用createSvgIcon
实用程序将svg包装在SvgIcon组件中。但是请查看顶部的require语句!它要求@material-ui/core/SvgIcon
,如果我在我的webpack配置中将其外部化,require将尝试通过调用http://localhost:3000/assets/vendor/@material-ui/core/material-ui.development/SvgIcon
(!!!)
现在是问题:
@material-ui/core/SvgIcon
来查找已被@material-ui/core
外部化的包并读取属性SvgIcon
?垫片是否具有类似的功能?当然,我担心专门为SvgIcon制作特殊的捆绑包是,我将不得不对每个异常值组件执行相同的操作,而这不是可接受的解决方案。
我当然也可以将createSvgIcon实用工具捆绑在每个捆绑中,但是:
https://github.com/mui-org/material-ui/blob/master/packages/material-ui/src/SvgIcon/SvgIcon.js#L4
这意味着withStyles也将被打包,这将带来一百万种其他东西:
https://github.com/mui-org/material-ui/blob/master/packages/material-ui/src/styles/withStyles.js#L10
正在寻找建议
感谢任何关注此事的人。