描述如题,怎么给在 Vue SFC script 中引入的 CSS 加 scope,达到和 scoped-style-block 一样的效果?
没想到很好的解决方法,也没找到相关工具。我觉得次一点的方案也许是写一个 loader 专用来处理 .vue 文件,在 vue-loader 之前就把 JS 中相关 CSS 挪到单独的 style-block 中。再把处理结果交给 vue-loader 或后面的其它 loader 处理。
描述如题,怎么给在 Vue SFC script 中引入的 CSS 加 scope,达到和 scoped-style-block 一样的效果?
没想到很好的解决方法,也没找到相关工具。我觉得次一点的方案也许是写一个 loader 专用来处理 .vue 文件,在 vue-loader 之前就把 JS 中相关 CSS 挪到单独的 style-block 中。再把处理结果交给 vue-loader 或后面的其它 loader 处理。
27 回答12.8k 阅读
6 回答2.1k 阅读✓ 已解决
8 回答3.4k 阅读✓ 已解决
6 回答965 阅读✓ 已解决
5 回答5.1k 阅读✓ 已解决
4 回答1.5k 阅读✓ 已解决
3 回答1.7k 阅读
虽然不知道出于什么需求,首先仍然不太赞同此行为,个人认为vue sfc设计足够好,足够普遍适用性,mutil style 、css module本身都支持。
但是,提供一些hack思路😼(仅供参考,并未实际验证)
你的思路,简单、可行。需要一个prev vue file 的loader ,即
vue-loader
,在script
块,解析样式导入,同下⬇ 内联拼接包装一层loader,把vue-loader 生成scoped id的cv过来,拼内联结果
2,3其实同,关键都是拿到scopedId 然后丢给complier/sfc 的complierStyle 处理一下,然后丢给vue-style-loader 或者extract