Repository Guidelines

Repository Guidelines

项目结构与模块组织

本仓库是使用 Jekyll、Liquid、Kramdown 和 Rouge 的 GitHub Pages 博客。

  • _posts/:Markdown 博文;新文件统一使用 YYYY-MM-DD-title.md。
  • _layouts/:页面、文章等布局;_includes/:导航、页头和页脚。
  • less/:主题样式源文件;css/、js/:浏览器加载的样式和脚本。
  • img/、fonts/、pwa/:图片、字体和 PWA 资源;sw.js 管理缓存与离线行为。
  • _config.yml:站点配置;根目录 HTML 文件提供首页、标签页等入口。
  • _site/:构建输出,已被 Git 忽略,不提交。

构建、测试与本地开发

先安装 Ruby、RubyGems;修改前端资源时还需要 Node.js 和 npm。仓库没有 Gemfile 或依赖锁文件。

  • gem install jekyll jekyll-paginate:安装站点生成器及分页插件,与 .travis.yml 的安装步骤一致。
  • jekyll build:生成 _site/,也是现有 CI 的构建检查。
  • jekyll serve --watch:启动本地预览,默认地址为 http://localhost:4000。
  • npm install:安装 Grunt 开发依赖。
  • npm run py3view:通过 Python 3 在端口 8020 预览已有 _site/,不会构建站点。

Grunt 的默认任务压缩 JavaScript、编译 LESS 并添加版权横幅。但 package.json 的名称为 by-blog,任务据此引用的文件与实际 hux-blog 文件不匹配;使用 npx grunt 或 watch 脚本前,须先修正输入和输出路径。preview 脚本依赖 Python 2。

代码风格与命名

遵循相邻代码:HTML、Liquid 和传统主题 JavaScript 通常使用四空格;LESS 多用制表符,sw.js 使用两空格。避免无关的格式化。仓库未配置 lint 或格式化工具。

博文保留 YAML front matter,包含 layout: post、title、date 和 tags;日期与文件名一致。图片放入 img/ 并使用清晰文件名。修改主题源文件后,更新页面实际引用的压缩资源;不要直接手改 .min.js 或 .min.css。

验证要求

仓库没有测试框架、测试命名约定或覆盖率门槛;Codecov 配置本身不代表已有测试。提交前执行 jekyll build,并检查受影响页面的链接、图片、代码高亮及桌面和移动端布局。涉及分页、标签、导航或离线功能时,逐项浏览验证;缓存相关改动同时检查清空缓存后的行为。

提交与 Pull Request

历史提交主要使用“更新”,没有稳定的 Conventional Commits 约定。新提交应明确范围,例如 修复标签页链接 或 新增 eBPF 监控文章,每次提交聚焦一个变更。

PR 描述默认中文,包含变更摘要、验证命令及结果;相关 issue 存在时附上链接,视觉改动附截图。未执行的测试或浏览器验证标明 SKIPPED、原因与影响。

配置与协作

沟通默认中文,代码注释遵循所在文件惯例。保留已有未提交改动,不混入个人 IDE 文件。修改 _config.yml 或 CNAME 前确认域名及部署影响;不要在配置、博文或浏览器资源中新增密钥或令牌。