为何Jekyll中的Sass文件需以两行三重短横线开头?
嘿,这个问题问得特别实在——很多人刚开始用Jekyll处理Sass/SCSS或者Coffee文件时,都会对开头那两行--- ---摸不着头脑,我来给你掰扯清楚:
为什么Jekyll要求预编译文件开头加
--- ---? 这两行其实是Jekyll的空YAML Front Matter,核心作用是告诉Jekyll:“我不是普通的静态文件,你得用预编译工具处理我”,具体原因有这几个:
- 触发预编译流程:如果没有这两行,Jekyll会直接把你的Sass/SCSS文件原封不动复制到输出目录,根本不会帮你编译成浏览器能识别的CSS。只有加上空的Front Matter,Jekyll才会调用内置的Sass编译器,把你的预编译文件转换成最终的静态资源。
- 支持嵌入Liquid变量:哪怕你现在没用到,加上这两行后,你可以在Sass代码里直接用Jekyll的Liquid变量,比如写
$accent-color: {{ site.settings.accent }};,这在做可配置的主题时特别方便。 - 统一文件处理逻辑:Jekyll对所有动态内容(页面、帖子、资源)都遵循“有Front Matter就处理,没有就直接复制”的规则,这两行是让资源文件融入这套逻辑的标识。
关于格式规范和迁移的顾虑
你的担心完全合理,但其实这个问题根本算不上坑,解决起来特别简单:
- 语法兼容性:空的
--- ---不会破坏Sass/SCSS的语法规范——Jekyll在处理完文件后,会把这两行Front Matter完全移除,不会出现在最终编译后的CSS里。而且Sass本身也会把这两行当作非代码内容忽略,所以你的核心样式代码完全是标准的Sass语法。 - 迁移成本极低:如果以后要迁出Jekyll,只需要批量移除所有预编译文件开头的
--- ---就行。不管是用VS Code这类编辑器的批量替换功能,还是写个几行的小脚本,几分钟就能搞定。甚至有些其他静态站点生成器也支持类似的Front Matter,说不定换工具都不用改。
其实你看到的那些示例,都是Jekyll生态里的常规操作,很多成熟的主题都是这么写的,不用担心会有隐藏的格式问题或者迁移障碍。
内容的提问来源于stack exchange,提问作者Ky -
相关产品推荐
相关产品推荐

