站点审计
有几种情况会在发布的站点中产生错误,这些错误在构建过程中无法检测到。在最终构建之前运行此审计。
HUGO_MINIFY_TDEWOLFF_HTML_KEEPCOMMENTS=true HUGO_ENABLEMISSINGTRANSLATIONPLACEHOLDERS=true hugo && grep -inorE "<\!-- raw HTML omitted -->|ZgotmplZ|\[i18n\]|\(<nil>\)|(<nil>)|hahahugo" public/
使用 GNU Bash 5.1 和 GNU grep 3.7 进行测试。
示例输出
解释
环境变量
HUGO_MINIFY_TDEWOLFF_HTML_KEEPCOMMENTS=true
- 即使启用压缩,也保留 HTML 注释。这优先于站点配置中的
minify.tdewolff.html.keepComments
。如果您在执行此审计时压缩而不保留 HTML 注释,则将无法检测到何时省略了原始 HTML。 HUGO_ENABLEMISSINGTRANSLATIONPLACEHOLDERS=true
- 如果缺少翻译,则显示占位符而不是默认值或空字符串。这优先于站点配置中的
enableMissingTranslationPlaceholders
。
Grep 选项
-i, --ignore-case
- 忽略模式和输入数据中的大小写区别,以便仅大小写不同的字符相互匹配。
-n, --line-number
- 在输出的每一行前面加上其输入文件中基于 1 的行号。
-o, --only-matching
- 仅打印匹配行的匹配(非空)部分,每个部分在单独的输出行上。
-r, --recursive
- 递归读取每个目录下的所有文件,仅当符号链接位于命令行上时才跟随它们。
-E, --extended-regexp
- 将 PATTERNS 解释为扩展正则表达式。
模式
<!-- raw HTML omitted -->
- 默认情况下,Hugo 在渲染之前从 Markdown 中剥离原始 HTML,并将此 HTML 注释留在其位置。
ZgotmplZ
- ZgotmplZ 是一个特殊值,表示不安全的内容在运行时到达了 CSS 或 URL 上下文。请参阅详细信息。
[i18n]
- 如果缺少翻译,则会生成此占位符,而不是默认值或空字符串。
(<nil>)
- 当将 nil 值传递给
printf
函数时,此字符串将出现在渲染的 HTML 中。 (<nil>)
- 与上述相同,当从
printf
函数返回的值未通过safeHTML
传递时。 HAHAHUGO
- 在某些条件下,渲染的短代码可能包含字符串 HAHAHUGOSHORTCODE 的全部或一部分(大写或小写)。在所有情况下都很难检测到这种情况,但是对输出进行不区分大小写的搜索
HAHAHUGO
很可能捕获大多数情况,而不会产生误报。