时隔近 3 年重启 61dh。原本的 2.0.0-beta.51 本地已跑不动,升级到 ^2.0.0-rc.24。本文记录升级过程中的关键改动与差异,方便以后回看。
TL;DR
- 插件与 bundler 升级:替换
vuepress-plugin-sitemap2→@vuepress/plugin-sitemap,显式使用viteBundler()。 - 主题默认样式调整:
.vp-features/.vp-feature等类名替代旧的.features/.feature,并对齐官方样式。 - 首页 footer 在
.vp-home内:通过display:flex+margin-top:auto实现短页贴底、长页自然下推。 - 工具函数
inferSiderbars→inferSidebars,同时支持自动生成带标题/链接的 sidebar。 - 链接/排版风格:移除正文
p a的下划线、减小h2顶部空白。
改动概览(Diffstat)
docs/.vuepress/config.js | 12 +++++---
docs/.vuepress/styles/index.scss | 50 ++++++++++++++++++++-----------
docs/.vuepress/utils.js | 20 ++++++++----
docs/README.md | 15 +++++----
docs/english/README.md | 2 +-
docs/health/README.md | 2 +-
docs/other/README.md | 2 +-
docs/photography/README.md | 2 +-
docs/tech/README.md | 2 +-
9 files changed, ~80 insertions(+), ~40 deletions(-)
关键改动
1. 配置 (.vuepress/config.js)
- 引入新 bundler 与主题 API:
import { viteBundler } from "@vuepress/bundler-vite"; import { defaultTheme } from "@vuepress/theme-default"; import { defineUserConfig } from "vuepress"; - 插件更新:
vuepress-plugin-sitemap2→@vuepress/plugin-sitemap
- 添加
bundler: viteBundler()配置 - 修正
inferSiderbars→inferSidebars
2. 样式 (.vuepress/styles/index.scss)
- 类名对齐 VuePress v2:
.theme-container→.vp-theme-container.hero→.vp-hero.home→.vp-home.description→.vp-hero-description.features→.vp-features.feature h2→.vp-feature h2
- 新增卡片 hover 与可点击样式:
a.vp-feature { text-decoration: none } .vp-feature:hover span { color: var(--vp-c-accent, #299764); } - Footer 粘底:
.vp-home { display:flex; flex-direction:column; min-height:100vh; } .vp-home .vp-footer { margin-top:auto; flex-shrink:0; }
3. Sidebar 工具 (.vuepress/utils.js)
- 函数重命名
inferSiderbars→inferSidebars - 支持把
.md文件转成{ text, link }对象:const children = fs.readdirSync(dirpath) .filter(item => item.endsWith(".md")) .map(item => { const name = item.replace(/\.md$/, ""); return { text: name === "README" ? "首页" : name, link: `${parent}${name === "README" ? "" : name}.html`, }; });
4. 首页内容 (docs/README.md)
- footer 年份更新:
2022→2025 - Feature 块从:改为:
<div class="features"> <div class="feature" v-for="feat in $page.frontmatter.xfeatures">…</div> </div><div class="vp-features"> <a v-for="feat in $page.frontmatter.xfeatures" class="vp-feature" :href="feat.link"> <h2>{{ feat.title }}</h2> <p>{{ feat.details }} <span class="go">GO →</span></p> </a> </div>
5. 其他文档 Frontmatter
- 统一把各文档的
sidebar: auto→sidebar: heading。
总结
这次升级主要涉及:
- 依赖更新(插件、bundler、theme API)
- 样式类名重构(全面迁移到
.vp-*前缀) - 工具函数改进(sidebar 自动生成更语义化)
- 页面结构调整(features/首页 footer)
升级后站点在 VuePress 2.0.0-rc.24 下已顺利跑通,后续等待 2.0 正式版再进一步微调。
