在 Hugo 中集成 utterances 评论组件

utterances 是基于 GitHub issues 构建的轻量级评论小部件,通过此组件可以将 Github issues 应用于任何网站 前置条件 一个公开的 github repo 在该 repo 中安装utterances app 简单集成 打开utterances官网 在 configuration 节点填写 repo 信息等,填写好后会生成对应的组件代码 我使用的是 PaperMod1 主题,将生成好的代码放入layouts/partials/comments.html <!--layouts/partials/comments.html--> <script src="https://utteranc.es/client.js" repo="[ENTER REPO HERE]" issue-term="pathname" theme="github-light" label="Comment" crossorigin="anonymous" async ></script> 然后在config.yaml中开启评论功能即可简单集成 params: comments: true 动态主题适配 PaperMod 有明亮和暗黑两种颜色模式,而 utterances 的主题是编码时就写在script标签中的,为了使 comments 组件的主题适配 PaperMod 颜色主题,有以下两个步骤: 主题动态初始化 <!-- layouts/partials/comments.html --> <script> (function () { let theme = localStorage.getItem("pref-theme"); // already has prefer theme if (theme) { theme = theme === "dark" ?...

2023年1月24日

Css Integrity Error When Load Hugo Publish

问题描述 近日我使用 hugo 构建了我的博客,并通过 Github Action 将其发布在 Github Pages 上,刚开始还是很美好的,但是过一短时间以后打开页面发现样式全无,使用浏览器的开发者工具查看资源获取没有问题,但是在控制台却出现了这样一句话: Failed to find a valid digest in the 'integrity' attribute for resource '***' with computed SHA-256 integrity '***'. The resource has been blocked. 寻找原因 我在 MDN 上寻找到了关于 integrity 的定义,大概描述就是这是一个签名,浏览器获取到相应资源后会用相同的方法计算一个签名,只有签名相同时才会加载对应的资源,如果两个签名不一致则是文件完整性被破坏(文件发生了改变)。 问题来了,整个发布过程是由 Github Action 全自动操作的,没有人为干预,文件为何会无缘无故改变呢? 答案是 Cloudflare。 Cloudflare 中默认会开启静态资源的缓存来提高网站的加载速度,可是为什么缓存会改变文件呢?缓存并不会改变文件,在 Cloudflare 的 Speed > Optimization 中有一个叫 Auto Minify 的选项,描述如下: Reduce the file size of source code on your website. Note: Purge cache to have your change take effect immediately....

2022年6月20日