自用的博客主题, 仍有很多缺陷. 预览地址在这里
如有bug或建议, 欢迎提issue.
- 安装依赖
pnpm i
# 或者 npm i- 配置
所有站点设置都在 .vitepress/themeConfig.mts 中配置,无需修改组件或 .vitepress/config.mts。PWA manifest 和 Service Worker 自动生成。
- 启动
pnpm docs:dev
# 或者 npm run docs:dev- 构建
pnpm docs:build
# 或者 npm run docs:build- 依赖与当前
blog对齐,包括 VitePress2.0.0-alpha.12、Vue、UnoCSS 和 Markdown 编辑器;VitePress 当前使用的是 alpha 版本。 - 支持 Mermaid 代码块,例如:
```mermaid
flowchart LR
Write[写作] --> Publish[发布]
```/feed.xml输出 Atom 订阅,包含最近 5 篇未隐藏文章;站点地址和作者从.vitepress/themeConfig.mts读取。- 分类页使用 page 布局,导航统一在
.vitepress/themeConfig.mts中配置。 - PWA manifest、图标和 Service Worker 已接入。Service Worker 对页面导航优先请求网络,网络失败时使用缓存页面或已缓存的首页;这不保证所有页面资源均可离线使用。
使用 Node.js 22.18 或以上版本(.nvmrc 指定 Node.js 22),执行 pnpm install --frozen-lockfile 安装锁定的依赖。
pnpm post:new按提示输入文件名和标题,会在 posts/年/月/日/文件名.md 中创建文章,不覆盖已有文件。也可运行 make new 创建空标题的文章。
pnpm lint
pnpm docs:build
pnpm docs:preview只需编辑 .vitepress/themeConfig.mts:
| 配置 | 用途 |
|---|---|
name、description |
站点名称和简介;首页、友链申请信息、PWA 和订阅会同步读取 |
hostname、base |
域名与部署目录,例如 https://example.com 和 /blog/;域名中不要再包含目录 |
author、since |
作者姓名、邮箱、建站日期(YYYY-MM-DD);日期留空时隐藏建站天数 |
avatar、favicon、appleTouchIcon |
作者头像、站点图标、Apple 图标,可填写完整 URL 或 public 下的路径 |
nav、friends、footer、socialLinks |
导航、友链、页脚、社交链接 |
pageSize、profilePages |
每页文章数、显示作者卡片的页面路径 |
giscus |
默认 false 关闭评论;按文件内示例填写自己的 Giscus 参数,还可调整语言、主题、表情和输入位置 |
comments |
评论隐藏页面及路径前缀 |
pwa |
设为 false 关闭,或配置简称、颜色、显示模式和图标;名称与简介自动继承站点信息 |
feed |
设为 false 关闭订阅,或配置 limit、language、copyright;版权默认使用建站年份(未填则当前年份)和作者姓名 |
search、sidebar、outline 等 |
VitePress 默认主题配置直接在此填写;未设置 sidebar 时自动生成笔记目录 |
lang、head |
站点语言和日期格式、额外 meta 或统计脚本;界面文案可通过默认主题配置调整,自定义页面目前使用中文 |
所有站内配置路径以 / 开头,无需手动添加 base;头像和图标也支持外部地址。需要自己的本地图片时,将素材放入 public 后在配置中填写路径,不必覆盖模板图片。文章、笔记和关于页正文仍在各自 Markdown 文件中编辑。
public/manifest.json 和 public/sw.js 不再手动维护,开发环境动态提供 manifest,生产构建自动输出 manifest 和 Service Worker。Service Worker 只在生产环境注册,需要 HTTPS 或 localhost;缓存版本随构建内容自动更新,清理范围限于当前部署目录的主题缓存。页面导航优先请求网络,失败时使用已缓存页面或首页,不保证完整离线可用。
_headers 缓存规则随构建自动生成,路径跟随 base。支持该文件的托管平台可直接使用;其他服务器的响应头、域名绑定和 HTTPS 仍由托管平台管理。
验证:pnpm test、pnpm lint、pnpm docs:build。