
Jekyll 网站的 favicon 不能直接修改 _site 目录中的文件,因为该目录是构建时自动生成的;应将图标文件放入源码目录 assets/img/favicons/ 中,并确保配置正确,才能在部署后生效。
jekyll 网站的 favicon 不能直接修改 `_site` 目录中的文件,因为该目录是构建时自动生成的;应将图标文件放入源码目录 `assets/img/favicons/` 中,并确保配置正确,才能在部署后生效。
在使用 Jekyll(尤其是 Chirpy 主题)搭建静态网站时,更换 favicon 是一个常见但容易出错的操作。根本原因在于:_site 目录是 Jekyll 构建过程的输出产物,而非源码目录。你手动替换其中的 favicon 文件,会在下一次 jekyll build 或 CI/CD 部署时被完全覆盖——这并非 Bug,而是 Jekyll 的设计机制。
✅ 正确操作流程如下:
准备图标资源
使用 RealFaviconGenerator 生成全套 favicon 套件(含 .ico, .png, apple-touch-icon.png, manifest.json, browserconfig.xml 等),下载 ZIP 并解压。-
将图标放入源码目录(关键!)
在你的项目根目录下,确保存在路径:
assets/img/favicons/
将解压后的所有 favicon 文件(除 browserconfig.xml 和 site.webmanifest 外,通常也建议一并放入)复制至此目录。⚠️ 注意:不要放在 _site/assets/img/favicons/ —— 该目录每次构建都会重写,修改无效。
-
检查主题配置(以 Chirpy 为例)
Chirpy 默认通过 _includes/head/favicon.html 注入 favicon 标签,且会自动读取 assets/img/favicons/ 下的文件。请确认:- 该 include 文件未被意外注释或覆盖;
- site.webmanifest 和 browserconfig.xml 位于 assets/img/favicons/ 下,且路径在 HTML 中被正确引用(Chirpy 已预设,通常无需修改)。
-
本地验证与部署
# 清理旧构建(可选) rm -rf _site # 重新构建(触发 favicon 复制) bundle exec jekyll build # 查看生成结果 ls _site/assets/img/favicons/
浏览器中打开 _site/index.html,检查 <head> 中是否包含正确的 <link rel="icon">、<link rel="apple-touch-icon"> 及 <link rel="manifest"> 标签。
-
提交与推送
git add assets/img/favicons/ git commit -m "feat: update favicon with new branding" git push origin main
? 补充提示:
- 浏览器缓存常导致 favicon 不更新,可尝试:强制刷新(Ctrl+Shift+R)、清空缓存,或在 URL 后添加版本参数(如 favicon.ico?v=2)——但更推荐在构建时通过哈希文件名或更新 site.webmanifest 版本号来规避。
- 若使用 GitHub Pages 自动构建,请确认 Gemfile 中 Jekyll 版本与本地一致,避免因插件行为差异导致资源未复制。
只要图标文件置于源码 assets/img/favicons/ 并完成构建,favicon 即可稳定生效——这是 Jekyll “约定优于配置”原则的典型体现。

















