Skip to content

jokeuncle/jokeuncle.github.io

Repository files navigation

jokeuncle.github.io

Lei 的个人站和博客源码。站点发布在 https://jokeuncle.github.io,内容以 AI 工具、LLM/AI Infra 学习笔记、工程实践和项目记录为主。

这个仓库既是 Astro 前端项目,也是公开文章的发布面。根 README 的目标是说明如何运行、如何写文章、如何检查内容,以及如何发布。

主要能力

  • Astro 静态站点,构建输出目录为 dist-astro/
  • 首页个人介绍、项目展示、学习记录和联系信息。
  • 博客系统基于 Astro Content Collections,支持分页、标签页和 RSS。
  • Markdown 支持数学公式渲染,使用 remark-mathrehype-katex 和 KaTeX。
  • Markdown 支持 fenced Mermaid 图,文章页会在浏览器中渲染图表。
  • 博客文章支持来源字段,用于标注文章来自哪个项目、草稿或提交。
  • 通过 GoatCounter 展示文章阅读量。
  • GitHub Actions 自动构建并部署到 GitHub Pages。

技术栈

  • Astro 7
  • TypeScript
  • pnpm
  • KaTeX
  • Mermaid
  • GitHub Pages

CI 使用 Node.js 22 和 pnpm 11,配置见 .github/workflows/deploy.yml

本地开发

安装依赖:

pnpm install

启动开发服务器:

pnpm dev

默认访问地址:

http://localhost:4321

构建站点:

pnpm build

本地预览构建结果:

pnpm preview

博客内容

公开文章放在 src/content/blog/,文件格式为 Markdown。草稿、源稿或发布前的整理稿可以放在 docs/blog/

一篇文章的基本 frontmatter:

---
title: "文章标题"
description: "用于博客卡片、RSS 和 SEO 的简短描述。"
pubDate: 2026-07-16
author: Lei
tags: ["AI", "Engineering"]
draft: false
---

当前内容 schema 由 src/content.config.ts 定义,常用字段包括:

  • title:文章标题,必填。
  • description:文章摘要,必填。
  • pubDate:发布日期,必填。
  • updatedDate:更新日期,可选。
  • author:作者,默认是 Lei
  • tags:标签数组,默认是空数组。
  • draft:是否草稿,true 不会发布。
  • sourceProjectsourceTitlesourcePathsourceRepoUrlsourceCommit:来源信息,可选。
  • canonicalUrl:外部原文地址,可选。
  • rightslicense:内容权利信息,可选。

Markdown 能力

数学公式可以直接写在 Markdown 中:

行内公式:$PPL = exp(CE)$

块级公式:

$$
softmax(x_i) = \frac{e^{x_i}}{\sum_j e^{x_j}}
$$

流程图、结构图和状态图优先使用 Mermaid:

```mermaid
flowchart LR
  A[Source draft] --> B[Blog Markdown]
  B --> C[Astro build]
  C --> D[GitHub Pages]
```

图片和附件使用站点根路径:

  • 图片放在 public/images/,文章里使用 /images/example.png
  • 文件放在 public/files/,文章里使用 /files/example.pdf
  • 交互页面放在 public/interactive/,文章里使用 /interactive/example.html

不要在公开文章中写入本机绝对路径,例如 /Users/.../home/...、Windows 盘符路径或 file://...

发布前检查

提交或推送前至少运行:

pnpm validate:blog
pnpm build

pnpm validate:blog 会检查 src/content/blog/ 中是否泄漏本机路径。pnpm build 会执行 Astro 构建,验证内容 schema、路由和 Markdown 渲染是否通过。

博客路径检查脚本本身可以运行测试:

pnpm test:blog-validator

部署

推送到 main 分支后,GitHub Actions 会执行:

pnpm install --frozen-lockfile
pnpm build

构建产物来自 dist-astro/,随后部署到 GitHub Pages。也可以在 GitHub Actions 页面手动触发 Deploy to GitHub Pages workflow。

目录结构

.
├── src/
│   ├── components/        # Astro 组件
│   ├── content/blog/      # 公开博客文章
│   ├── layouts/           # 页面布局
│   ├── pages/             # Astro 路由
│   ├── scripts/           # 前端脚本
│   └── styles/            # 全局样式
├── docs/
│   └── blog/              # 博客源稿和整理稿
├── public/
│   ├── files/             # 可公开下载的附件
│   ├── images/            # 文章图片和站点图片
│   └── interactive/       # 可公开访问的交互页面
├── scripts/               # 校验、测试和生成脚本
├── .github/workflows/     # GitHub Pages 部署流程
├── astro.config.mjs       # Astro 配置
├── src/content.config.ts  # Content Collections schema
└── package.json           # 脚本和依赖

dist-astro/.astro/node_modules/ 是生成目录,不作为内容维护入口。

内容维护原则

  • 根 README 只说明仓库维护方式,不写成面向访客的营销页。
  • src/content/blog/ 里的文章必须是可以公开发布的版本。
  • 来源路径使用项目相对路径,不使用本机绝对路径。
  • 复杂流程图优先使用 Mermaid,必要图片放入 public/images/
  • 发布前用 pnpm validate:blog 做本机路径泄漏检查。

许可证

当前仓库尚未包含独立的 LICENSE 文件。复用代码或文章内容前,请先确认授权范围。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors