在Lit自定义元素中使用SCSS:rollup-plugin-scss-lit是否仍是最优方案?
在Lit自定义元素中使用SCSS的最佳方式:关于rollup-plugin-scss-lit的现状
rollup-plugin-scss-lit目前仍是Rollup生态里处理Lit组件SCSS的可靠选项,但并非唯一选择,具体得看你的项目工具链场景:
现有方案分析
- rollup-plugin-scss-lit本身:它的核心优势是直接将SCSS编译为Lit所需的
css模板对象,无需额外转换步骤,用法简单直接,适合已经基于Rollup搭建的老项目,2022年的方案至今仍能正常工作,只要你的Rollup版本兼容就行。 - Vite + 原生SCSS导入:如果是新项目,更推荐这种方式。Vite本身内置了SCSS编译支持,你只需在Lit组件中直接导入SCSS文件,再用
css()包裹导入的样式字符串即可,示例代码:
这种方式不需要额外安装SCSS插件,Vite的热更新和编译速度也更出色,是目前社区的主流选择。import styleStr from './my-element.scss?raw'; import { css, LitElement } from 'lit'; class MyElement extends LitElement { static styles = css([styleStr]); // 组件逻辑... } - Rollup + rollup-plugin-scss:如果坚持用Rollup但不想用rollup-plugin-scss-lit,也可以用
rollup-plugin-scss将SCSS编译为字符串,再在组件中导入后用css()包裹,配置上只需让插件输出字符串而非单独的CSS文件即可。
关于Lit官网未提及SCSS的原因
Lit官方更推崇原生CSS特性(比如CSS变量、嵌套选择器的原生支持),预处理器属于社区拓展范畴,所以官网不会专门针对某一款SCSS插件做官方文档,相关支持更多由社区维护的插件提供。
总结
如果你的项目已经基于Rollup且一直在用rollup-plugin-scss-lit,继续用完全没问题;如果是新项目,优先考虑Vite + 原生SCSS导入的组合,工具链更现代、上手成本更低。
内容的提问来源于stack exchange,提问作者Bob Ramsey
相关产品推荐
相关产品推荐

