代码之家  ›  专栏  ›  技术社区  ›  Trevor Donahue

需要配置将某个子url映射到同一捆绑包的子模块[混淆?]

  •  0
  • Trevor Donahue  · 技术社区  · 7 年前

    很抱歉标题有误导性,我不知道如何用一句话来解释这个问题。

    下面是我的简化RequireJS配置示例:

    {
        paths: {
            ...
            "@material-ui/core": "http://localhost:3000/assets/vendor/@material-ui/core/material-ui.development"
            ...
        }
    }
    

    material-ui.development.js 是一个umd包,包含除图标以外的所有材料ui所需的内容。

    这个requirejs配置在主脚本启动时加载,页面上加载的所有其他包(umd webpack包)都依赖这些路径工作。

    计划如下:

    1. 导入所有捆绑包 @material-ui/core 通过主入口点的组件如下: import { Button } from '@material-ui/core'; 是的。并且拥有 @材料界面/核心 完全外部化。
      • 这里没问题。这似乎是工作的预期!
    2. 所有捆绑包都有自己的图标( @material-ui/icons )中。可能包含多个捆绑包中的一些图标副本,但这可以忽略不计。在将来,如果这成为失控,我可以创建一个新的自定义捆绑包与一组常用的图标,以避免重复。
      • 2的问题。这是:

    https://github.com/mui-org/material-ui/blob/master/packages/material-ui-icons/src/utils/createSvgIcon.js#L3

    每个图标使用 createSvgIcon 在svgicon组件中包装svg的实用程序。但是看看上面的需求声明!它要求 @material-ui/core/SvgIcon 如果我在webpack配置中外部化,require将尝试通过调用 http://localhost:3000/assets/vendor/@material-ui/core/material-ui.development/SvgIcon (!!!)

    现在的问题是:

    • 有办法绘制地图吗 @材料界面/核心/SVGICON 查找已外部化的包 @材料界面/核心 并阅读属性 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

    寻找建议,

    多亏有人看了这个。

    0 回复  |  直到 7 年前