我有一个要求,我不确定是否可以使用Rollup(或Webpack?)实现
我已经编写了一个React组件库。每个组件均导入其样式表。像
import "./button.scss"
export default function Button() {
...
}
现在,这些scss文件使用我想在全局文件中定义的各种sass变量。
我希望图书馆的使用者可以这样导入Button
:
import { Button } from "mylib"
甚至更好:
import Button from "mylib/button"
并且仅将Button
所需的代码添加到我的库中。
我一辈子都无法确定如何实现这一目标。
是否对使用sass和sass变量的可摇树的React组件库有很好的参考?
奖金问题:
我有一些仅某些组件需要的第三方CSS。
因此,如果每个组件的scss文件都导入:
@import "~some-third-party-css-lib.css"
汇总会复制该CSS吗?还是有某种重复数据删除机制?
谢谢!
答案 0 :(得分:4)
据我所知(2020年2月),为组件库提供良好的摇树结果的唯一选择是:
import Button from "mylib/button"
)。这是因为大多数捆绑程序都将css导入视为副作用,并且很难(实际上甚至不可能)确定实际使用的类。因此,如果您的库中有一个索引可以重新导出所有组件,那么这将导致导入所有css并可能将其捆绑在一起。这具有一些应考虑的含义。
到目前为止,我还不知道一种支持完全摇树(包括CSS)的解决方案,同时也不会给使用中的应用程序带来额外的复杂性。但我目前仍在研究此主题,如果发现有趣的内容,将在此处发布更新。
答案 1 :(得分:-1)
查看库tailwindcss。它会自动清除未使用的 css 变量。