网站审计
有几种情况可能会在已发布的网站中产生错误,而这些错误在构建期间不会被检测到。在最终构建之前运行此审计。
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
:将模式解释为扩展正则表达式。
模式
<!-- raw HTML omitted -->
:默认情况下,Hugo 在渲染之前会从 Markdown 中剥离原始 HTML,并在此位置留下此 HTML 注释。
ZgotmplZ
:ZgotmplZ 是一个特殊值,表示不安全的内容在运行时到达了 CSS 或 URL 上下文。请参阅 详细信息。
[i18n]
:如果翻译缺失,这是生成的占位符,而不是默认值或空字符串。
(<nil>)
:当将 nil 值传递给 printf 函数时,此字符串将出现在渲染后的 HTML 中。
(<nil>)
:与上面相同,当 printf 函数返回的值未通过 safeHTML 传递时。
HAHAHUGO
:在某些情况下,渲染后的 shortcode 可能包含字符串 HAHAHUGOSHORTCODE 的全部或部分(大写或小写)。这在所有情况下都难以检测,但对输出进行不区分大小写的 HAHAHUGO 搜索可能会捕获大多数情况而不会产生误报。