站点审计
已发布站点中可能出现一些在构建过程中未检测到的错误,这些错误是由多种条件造成的。在最终构建之前运行此审计。
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>)
- 将空值传递给
printf
函数时,此字符串将出现在渲染的 HTML 中。 (<nil>)
- 与上述相同,当从
printf
函数返回的值未通过safeHTML
传递时。 HAHAHUGO
- 在某些情况下,渲染的短代码可能包含全部或部分字符串 HAHAHUGOSHORTCODE(大写或小写)。这在所有情况下都很难检测到,但对输出进行大小写不敏感的
HAHAHUGO
搜索很可能会捕获大部分情况,而不会产生误报。