几天后,我将在核心代码中合并 此 PR,该 PR 将更改插件样式表的编译方式。此变更会影响插件样式表中使用的 SCSS 颜色变量。简而言之,这些变量需要替换为 CSS 自定义属性。大多数插件已经更新,在多数情况下,这只是一个简单的修改:只需将 SCSS 变量替换为 CSS 自定义属性:
- background-color: $primary-low;
+ background-color: var(--primary-low);
更多示例以及如何处理更复杂的颜色转换,请参阅指南:https://meta.discourse.org/t/updating-themes-and-plugins-to-support-automatic-dark-mode/161595。(该指南足以帮助插件作者确保其样式能够正确运行。)
如果您想知道我们为何要进行此项更改,请继续阅读。
此前,核心和插件样式表是“按主题”进行编译的,以便在 SCSS 颜色变量被使用的地方包含该主题的颜色方案。这意味着拥有多个主题的网站(或多站点环境)需要花费很长时间进行预编译,因为它必须将核心和插件样式表的数量与活跃主题的数量相乘,以覆盖所有必要的组合。
自 2020 年 8 月起,为支持自动深色模式切换,我们添加了一个独立的颜色定义样式表,将颜色变量存储为 CSS 自定义属性。这一变更使我们能够即时切换颜色方案,但也将颜色从大多数样式表中抽象出来。得益于 CSS 自定义属性的魔力,我们现在可以在所有地方(核心、插件、主题)引用颜色,而无需在编译样式表时加载每个主题。
在过去几个月里,我们一直在将所有插件转换为使用 CSS 自定义属性。绝大多数 Discourse 插件现已更新完毕,但可能仍有少数插件仍使用 SCSS 变量定义颜色,这些插件需要进行更新。
