【问题标题】:Material-UI class name collisionsMaterial-UI 类名冲突
【发布时间】:2021-03-16 13:32:11
【问题描述】:

我正在构建一个基于 MUI 的组件库,用于多个内部站点,使用 Lerna 来管理本地开发包。我们遇到了一些类名冲突的问题。例如:

MyComponent.jsx

const useStyles = makeStyles(theme => ({
    root: { 
    ...
    }
})

export const MyComponent = props => {
    const classes = useStyles();

    return (
        <div className={classes.root}>
            Hello SO
        </div>
    );
}

import { MyComponent } from 'my-library';

const useStyles = makeStyles(theme => ({
    root: { 
    ...
    }
})

export const MyView = props => {
    const classes = useStyles();

    return (
        <div className={classes.root}> // classes.root === "makeStyles-root-1"
            <MyComponent /> // root class is named "makeStyles-root-1
        </div>
    );

}

由于某些类被名称冲突覆盖,这会导致问题。

【问题讨论】:

  • 这很可能意味着您的应用最终会得到两个 Material-UI 副本。我建议将 Material-UI 作为组件库中的对等依赖项。
  • 它目前是,但它也是一个 devDependency - 这也是导致问题的原因吗?
  • 不确定,但要检查的关键是 Material-UI 是否最终成为组件库构建输出的一部分。
  • 解决了,感谢您为我指明正确的方向!
  • 已经详细写过here.

标签: material-ui lerna


【解决方案1】:

将 MUI 移动为仅对等依赖项(而不是 devDep 和对等)解决了该问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多