【发布时间】: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