chore: 升级 VuePress/Plume 并迁移至 collections 配置

- 将 vuepress 升至 2.0.0-rc.26、vuepress-theme-plume 升至 1.0.0-rc.192

- 用 defineCollections 替代已废弃的 blog + notes,新增 collections.ts 并删除 notes.ts

- 通过 package overrides 将 @vuepress/helper 固定为 rc.123,避免 dev 下 encodeSVG 缺失导致首页白屏

- 新增 .npmrc(legacy-peer-deps)以兼容当前 peer 依赖解析

未包含 docs/.vuepress/dist 等构建产物。

Made-with: Cursor
This commit is contained in:
祀梦
2026-03-29 10:01:40 +08:00
parent 8da5cf2593
commit f50d8ef8c2
7 changed files with 3849 additions and 2449 deletions

1
.npmrc Normal file
View File

@@ -0,0 +1 @@
legacy-peer-deps=true

View File

@@ -0,0 +1,259 @@
import { defineCollection, defineCollections } from 'vuepress-theme-plume'
/** 博客目录名 → 中文分类展示 */
const BLOG_CATEGORY_LABEL_ZH: Record<string, string> = {
blog: '博客',
competition: '竞赛',
technology: '技术',
website: '网站',
elysia: '爱莉希雅',
collect: '合集',
}
export default defineCollections([
defineCollection({
type: 'post',
dir: 'blog',
title: '博客',
link: '/blog/',
linkPrefix: '/article/',
postCover: {
layout: 'left',
compact: true,
},
categoriesTransform: (categories) =>
categories.map((c) => ({
...c,
name: BLOG_CATEGORY_LABEL_ZH[c.name] ?? c.name,
})),
}),
defineCollection({
type: 'doc',
dir: 'notes/programming/leetcode',
title: 'LeetCode',
linkPrefix: '/programming/leetcode/',
sidebar: [
{ text: 'LeetCode 指南', link: '/programming/leetcode/' },
{
text: '刷题题单',
prefix: '/question_sheet',
items: [
{ text: 'LeetCode 入门题单~(≧∇≦)ノ', link: '/programming/leetcode/question_sheet/beginner/' },
],
},
],
}),
defineCollection({
type: 'doc',
dir: 'notes/subject/english',
title: '英语学习',
linkPrefix: '/subject/english/',
sidebar: [
{ text: '英语学习笔记', link: '/subject/english/' },
{
text: '学习环境与工具',
prefix: '/basis',
items: [{ text: '英语环境配置', link: '/subject/english/basis/' }],
},
{
text: '词汇与记忆',
prefix: '/vocabulary',
items: [{ text: '词汇学习与记忆法', link: '/subject/english/vocabulary/' }],
},
{
text: '语法与句法',
prefix: '/grammar',
items: [{ text: '核心语法与句型', link: '/subject/english/grammar/' }],
},
{
text: '听力与口语',
prefix: '/listening-speaking',
items: [{ text: '听力口语训练', link: '/subject/english/listening-speaking/' }],
},
{
text: '阅读与写作',
prefix: '/reading-writing',
items: [{ text: '阅读提升', link: '/subject/english/reading-writing/' }],
},
{
text: '写译',
prefix: '/writing-translation',
items: [{ text: '写作与翻译指南', link: '/subject/english/writing-translation/' }],
},
{
text: '考试与备考',
prefix: '/exam',
items: [{ text: '英语四级 (CET-4) 备考指南', link: '/subject/english/exam/cet-4/' }],
},
{
text: '资源与工具',
prefix: '/resources',
items: [{ text: '学习资源与工具', link: '/subject/english/resources/' }],
},
],
}),
defineCollection({
type: 'doc',
dir: 'notes/subject/certification',
title: '系统分析师',
linkPrefix: '/subject/certification/',
sidebar: [
{ text: '系统分析师简介', link: '/subject/certification/' },
{
text: '第一篇 基础知识',
prefix: '/certification/sys-analyst',
items: [
{ text: '第一章 绪论', link: '/subject/certification/sys-analyst/' },
{ text: '第二章 数学与工程基础', link: '/subject/certification/sys-analyst/math/' },
],
},
{
text: '第二篇 关键技术',
prefix: '/certification/sys-analyst',
items: [
{ text: '第十章 系统规划与分析', link: '/subject/certification/sys-analyst/planning/' },
],
},
],
}),
defineCollection({
type: 'doc',
dir: 'notes/programming/solidity',
title: 'Solidity',
linkPrefix: '/programming/solidity/',
sidebar: [
{ text: 'Solidity 学习笔记', link: '/programming/solidity/' },
{
text: '基础语法',
prefix: '/basic-syntax',
items: [
{ text: 'Solidity 基础语法与数据类型', link: '/programming/solidity/basic-syntax/' },
],
},
{
text: '项目实例',
prefix: '/basic-syntax',
items: [{ text: 'Solidity 代码实例', link: '/programming/solidity/analysis/case-analysis/' }],
},
{
text: '杂项',
prefix: '/other',
items: [
{ text: 'Hardhat 相关知识', link: '/programming/solidity/other/hardhat/' },
{ text: '一些没分类的小知识', link: '/programming/solidity/other/miscellaneous/' },
],
},
],
}),
defineCollection({
type: 'doc',
dir: 'notes/theory/cryptography',
title: '密码学基础',
linkPrefix: '/theory/cryptography/',
sidebar: [
{ text: '密码学基础', link: '/theory/cryptography/' },
{
text: '古典加密算法',
prefix: '/theory',
items: [
{ text: '替换密码', link: '/theory/cryptography/substitution-ciphers/' },
{ text: '置换密码', link: '/theory/cryptography/permutation-encryption/' },
],
},
],
}),
defineCollection({
type: 'doc',
dir: 'notes/ops/blockchain',
title: '区块链运维',
linkPrefix: '/ops/blockchain/',
sidebar: [
{ text: '区块链运维指南', link: '/ops/blockchain/' },
{
text: '区块链理论基础',
prefix: '/theory',
items: [
{ text: '区块链的基本原理', link: '/ops/blockchain/theory/basic-principles/' },
{ text: 'FISCO-BCOS 节点类型', link: '/ops/blockchain/theory/fisco-bcos-node-type/' },
],
},
{
text: '区块链运维',
items: [
{ text: '区块链产品设计和基本部署', link: '/ops/blockchain/practice/basic-deployment/' },
{ text: '区块链网络部署与管理', link: '/ops/blockchain/practice/node-deployment/' },
{ text: 'Console 控制台操作', link: '/ops/blockchain/practice/console-operator/' },
],
},
],
}),
defineCollection({
type: 'doc',
dir: 'notes/ops/linux',
title: 'Linux 运维',
linkPrefix: '/ops/linux/',
sidebar: [
{ text: 'Linux 运维笔记', link: '/ops/linux/' },
{
text: 'Linux 基础',
prefix: '/linux',
items: [{ text: 'Linux 基础命令详解', link: '/ops/linux/basic-commands/' }],
},
{
text: '其他',
prefix: '/linux',
items: [{ text: '一些零散的命令', link: '/ops/linux/other/' }],
},
],
}),
defineCollection({
type: 'doc',
dir: 'notes/ops/docker',
title: 'Docker',
linkPrefix: '/ops/docker/',
sidebar: [
{ text: 'Docker 运维笔记', link: '/ops/docker/' },
{
text: '数据库相关',
prefix: '/ops/docker/db/',
items: [
{ text: 'MongoDB 部署', link: '/ops/docker/db/mongodb/' },
{ text: 'Postgres 部署', link: '/ops/docker/db/postgres/' },
],
},
{
text: '其他服务',
prefix: '/ops/docker/other/',
items: [{ text: 'ETLCloud 部署', link: '/ops/docker/other/ETLCloud/' }],
},
],
}),
defineCollection({
type: 'doc',
dir: 'notes/programming/web',
title: 'Web 开发',
linkPrefix: '/programming/web/',
sidebar: [
{ text: 'Web 开发学习笔记', link: '/programming/web/' },
{
text: '基础知识',
prefix: '/basic-syntax',
items: [
{ text: 'Web 前端基础讲解', link: '/programming/web/basic-syntax/html-css-js/' },
{ text: 'HTML 常用标签与属性', link: '/programming/web/basic-syntax/html-tags-attributes/' },
{ text: 'HTML 列表与语义布局', link: '/programming/web/basic-syntax/html-lists-and-semantic-layout/' },
{ text: 'JavaScript 基础知识', link: '/programming/web/basic-syntax/javascript-basics/' },
],
},
],
}),
])

View File

@@ -10,16 +10,6 @@ import { fileURLToPath } from 'node:url'
const __filename = fileURLToPath(import.meta.url) const __filename = fileURLToPath(import.meta.url)
const __dirname = path.dirname(__filename) const __dirname = path.dirname(__filename)
/** 博客目录名 → 中文分类展示Plume 从路径自动生成分类,此处仅改展示名) */
const BLOG_CATEGORY_LABEL_ZH: Record<string, string> = {
blog: '博客',
competition: '竞赛',
technology: '技术',
website: '网站',
elysia: '爱莉希雅',
collect: '合集',
}
export default defineUserConfig({ export default defineUserConfig({
base: '/', base: '/',
lang: 'zh-CN', lang: 'zh-CN',
@@ -44,8 +34,6 @@ export default defineUserConfig({
theme: plumeTheme({ theme: plumeTheme({
/* 站点域名,启动 SEO 优化 */ /* 站点域名,启动 SEO 优化 */
hostname: 'https://www.simengweb.com', hostname: 'https://www.simengweb.com',
/* 博客文章页面链接前缀 */
article: '/article/',
/* 启用数学公式支持和Mermaid图表 */ /* 启用数学公式支持和Mermaid图表 */
markdown: { markdown: {
@@ -66,21 +54,6 @@ export default defineUserConfig({
message: '愿每一份温柔都被世界珍藏 ✨', message: '愿每一份温柔都被世界珍藏 ✨',
copyright: '<a href="https://beian.miit.gov.cn/" target="_blank" aria-label="gongan filing address">沪ICP备2023010022号-1</a>©2025祀梦的个人博客' copyright: '<a href="https://beian.miit.gov.cn/" target="_blank" aria-label="gongan filing address">沪ICP备2023010022号-1</a>©2025祀梦的个人博客'
}, },
/**
* 博客相关配置
*/
blog: {
postCover: {
layout: 'left',
// width: 300,
compact: true
},
categoriesTransform: (categories) =>
categories.map((c) => ({
...c,
name: BLOG_CATEGORY_LABEL_ZH[c.name] ?? c.name,
})),
},
/** /**
* 文章贡献者配置 * 文章贡献者配置

View File

@@ -1,200 +0,0 @@
import { defineNoteConfig, defineNotesConfig } from 'vuepress-theme-plume'
/**
* 配置编程笔记
*/
const LeetCode = defineNoteConfig({
dir: 'programming',
link: '/programming/leetcode/',
sidebar: [
{ text: "LeetCode 指南", link: "/programming/leetcode/" },
{
text: "刷题题单", prefix: "/question_sheet", items: [
{ text: "LeetCode 入门题单~(≧∇≦)ノ", link: "/programming/leetcode/question_sheet/beginner/" }
]
}
]
})
const english = defineNoteConfig({
dir: 'subject',
link: '/subject/english/',
sidebar: [
{ text: "英语学习笔记", link: "/subject/english/" },
{
text: "学习环境与工具", prefix: "/basis", items: [
{ text: "英语环境配置", link: "/subject/english/basis/" }
]
},
{
text: "词汇与记忆", prefix: "/vocabulary", items: [
{ text: "词汇学习与记忆法", link: "/subject/english/vocabulary/" }
]
},
{
text: "语法与句法", prefix: "/grammar", items: [
{ text: "核心语法与句型", link: "/subject/english/grammar/" }
]
},
{
text: "听力与口语", prefix: "/listening-speaking", items: [
{ text: "听力口语训练", link: "/subject/english/listening-speaking/" }
]
},
{
text: "阅读与写作", prefix: "/reading-writing", items: [
{ text: "阅读提升", link: "/subject/english/reading-writing/" }
]
},
{
text: "写译", prefix: "/writing-translation", items: [
{ text: "写作与翻译指南", link: "/subject/english/writing-translation/" }
]
},
{
text: "考试与备考", prefix: "/exam", items: [
{ text: "英语四级 (CET-4) 备考指南", link: "/subject/english/exam/cet-4/" }
]
},
{
text: "资源与工具", prefix: "/resources", items: [
{ text: "学习资源与工具", link: "/subject/english/resources/" }
]
}
]
})
const certification = defineNoteConfig({
dir: 'subject',
link: '/subject/certification/',
sidebar: [
{ text: "系统分析师简介", link: "/subject/certification/" },
{
text: "第一篇 基础知识", prefix: "/certification/sys-analyst", items: [
{ text: "第一章 绪论", link: "/subject/certification/sys-analyst/" },
{ text: "第二章 数学与工程基础", link: "/subject/certification/sys-analyst/math/" }
],
},
{
text: "第二篇 关键技术", prefix: "/certification/sys-analyst", items: [
{ text: "第十章 系统规划与分析", link: "/subject/certification/sys-analyst/planning/" }
],
}
]
})
const solidity = defineNoteConfig({
dir: 'programming',
link: '/programming/solidity/',
sidebar: [
{ text: "Solidity 学习笔记", link: "/programming/solidity/" },
{
text: "基础语法", prefix: "/basic-syntax", items: [
{ text: "Solidity 基础语法与数据类型", link: "/programming/solidity/basic-syntax/" }
],
},
{
text: "项目实例", prefix: "/basic-syntax", items: [
{ text: "Solidity 代码实例", link: "/programming/solidity/analysis/case-analysis/" }
],
},
{
text: "杂项", prefix: "/other", items: [
{ text: "Hardhat 相关知识", link: "/programming/solidity/other/hardhat/" },
{ text: "一些没分类的小知识", link: "/programming/solidity/other/miscellaneous/" }
],
}
]
})
const cryptography = defineNoteConfig({
dir: 'theory',
link: '/theory/cryptography/',
sidebar: [
{ text: "密码学基础", link: "/theory/cryptography/" },
{
text: "古典加密算法", prefix: "/theory", items: [
{ text: "替换密码", link: "/theory/cryptography/substitution-ciphers/" },
{ text: "置换密码", link: "/theory/cryptography/permutation-encryption/" },
]
},
]
})
const blockchain = defineNoteConfig({
dir: 'ops',
link: '/ops/blockchain',
sidebar: [
{ text: "区块链运维指南", link: "/ops/blockchain/" },
{
text: "区块链理论基础", prefix: "/theory", items: [
{ text: "区块链的基本原理", link: "/ops/blockchain/theory/basic-principles/" },
{ text: "FISCO-BCOS 节点类型", link: "/ops/blockchain/theory/fisco-bcos-node-type/" }
]
},
{
text: "区块链运维", items: [
{ text: "区块链产品设计和基本部署", link: "/ops/blockchain/practice/basic-deployment/" },
{ text: "区块链网络部署与管理", link: "/ops/blockchain/practice/node-deployment/" },
{ text: "Console 控制台操作", link: "/ops/blockchain/practice/console-operator/" }
]
}
]
})
const linux = defineNoteConfig({
dir: 'ops',
link: '/ops/',
sidebar: [
{ text: "Linux 运维笔记", link: "/ops/linux/" },
{
text: "Linux 基础", prefix: "/linux", items: [
{ text: "Linux 基础命令详解", link: "/ops/linux/basic-commands/" }
]
},
{
text: "其他", prefix: "/linux", items: [
{ text: "一些零散的命令", link: "/ops/linux/other/" }
]
}
]
})
const docker = defineNoteConfig({
dir: 'ops',
link: '/ops/docker/',
sidebar: [
{ text: "Docker 运维笔记", link: "/ops/docker/" },
{
text: "数据库相关",
prefix: "/ops/docker/db/",
items: [
{ text: "MongoDB 部署", link: "/ops/docker/db/mongodb/" },
{ text: "Postgres 部署", link: "/ops/docker/db/postgres/" },
]
},
{
text: "其他服务",
prefix: "/ops/docker/other/",
items: [
{ text: "ETLCloud 部署", link: "/ops/docker/other/ETLCloud/" },
]
},
]
})
const web = defineNoteConfig({
dir: 'programming',
link: '/programming/web/',
sidebar: [
{ text: "Web 开发学习笔记", link: "/programming/web/" },
{
text: "基础知识", prefix: "/basic-syntax", items: [
{ text: "Web 前端基础讲解", link: "/programming/web/basic-syntax/html-css-js/" },
{ text: "HTML 常用标签与属性", link: "/programming/web/basic-syntax/html-tags-attributes/" },
{ text: "HTML 列表与语义布局", link: "/programming/web/basic-syntax/html-lists-and-semantic-layout/" },
{ text: "JavaScript 基础知识", link: "/programming/web/basic-syntax/javascript-basics/" },
],
},
]
})
/**
* 导出所有的 note
*/
export default defineNotesConfig({
dir: 'notes',
link: '/',
notes: [LeetCode, english, certification, solidity, blockchain, linux, docker, cryptography, web],
})

View File

@@ -1,6 +1,6 @@
import { defineThemeConfig } from 'vuepress-theme-plume' import { defineThemeConfig } from 'vuepress-theme-plume'
import collections from './collections'
import navbar from './navbar' import navbar from './navbar'
import notes from './notes'
export default defineThemeConfig({ export default defineThemeConfig({
logo: '/plume.svg', logo: '/plume.svg',
@@ -21,5 +21,5 @@ export default defineThemeConfig({
}, },
navbar, navbar,
notes, collections,
}) })

5794
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -7,6 +7,9 @@
"engines": { "engines": {
"node": "^20.6.0 || >=22.0.0" "node": "^20.6.0 || >=22.0.0"
}, },
"overrides": {
"@vuepress/helper": "2.0.0-rc.123"
},
"scripts": { "scripts": {
"docs:dev": "vuepress dev docs", "docs:dev": "vuepress dev docs",
"docs:dev-clean": "vuepress dev docs --clean-cache --clean-temp", "docs:dev-clean": "vuepress dev docs --clean-cache --clean-temp",
@@ -15,17 +18,17 @@
"vp-update": "npx vp-update" "vp-update": "npx vp-update"
}, },
"devDependencies": { "devDependencies": {
"@vuepress/bundler-vite": "2.0.0-rc.24", "@vuepress/bundler-vite": "2.0.0-rc.26",
"@vuepress/plugin-umami-analytics": "^2.0.0-rc.112", "@vuepress/plugin-umami-analytics": "2.0.0-rc.112",
"artalk": "^2.9.1", "artalk": "^2.9.1",
"http-server": "^14.1.1", "http-server": "^14.1.1",
"typescript": "^5.9.2", "typescript": "^5.9.2",
"vue": "^3.5.21", "vue": "^3.5.21",
"vuepress": "2.0.0-rc.24", "vuepress": "2.0.0-rc.26",
"vuepress-theme-plume": "1.0.0-rc.164" "vuepress-theme-plume": "1.0.0-rc.192"
}, },
"dependencies": { "dependencies": {
"@vuepress/plugin-comment": "^2.0.0-rc.112", "@vuepress/plugin-comment": "2.0.0-rc.123",
"@waline/client": "^3.13.0", "@waline/client": "^3.13.0",
"mermaid": "^11.12.1" "mermaid": "^11.12.1"
} }