2024年12月13日
AI摘要:
笔者分享了如何使用 VitePress 设计具有个人风格的博客,并从实际需求出发,阐述了选择 VitePress 的原因:自定义程度高、无需服务器、支持 Markdown 等。相比传统的 vue+nodejs 搭建方式和 Hexo 的繁琐配置,VitePress 更加轻量和便捷。文章详细介绍了从安装到项目配置的完整流程,包括前置准备、安装方式、文件结构和配置文件的作用。笔者还提供了通过命令行快速初始化项目的操作方法,强调了在现有项目中嵌套使用 VitePress 的最佳实践,如在 ./docs 目录中搭建站点。对于开发者关心的 Markdown 文件处理,文章指出 VitePress 基于文件路由,将 .md 文件直接编译为 .html,并支持灵活的主题定制。最后,笔者演示了如何通过内置的 npm 脚本启动本地开发服务器,并使用热更新功能快速预览效果。总体而言,VitePress 是搭建简洁、高效、富有个性化博客的理想工具。
之前一直想自己写一个博客,之前尝试过使用vue+nodejs使用前端+后台的方式搭建博客,但是这种方式局限性太大而且非常麻烦,还需要支付服务器的费用,所以就放弃了。 后来又研究了一段时间的hexo,不得不说,确实非常方便,但是hexo有点太“花哨”了,而且配置项太多,太繁琐,自己也没有时间去研究。 再后来发现了vitepress,怎么说呢,就是非常符合我对写博客网址的要求:自定义程度高,写作方便,不需要服务器,用markdown写完博客后自动生成html非常方便,而且样式和布局完全可以自定义,可以设计出属于自己风格的博客。
可以直接在 StackBlitz 上进行在线尝试。
VitePress 可以单独使用,也可以安装到现有项目中。在这两种情况下,都可以使用以下方式安装它:
npm add -D vitepresspnpm add -D vitepressyarn add -D vitepressyarn add -D vitepress vuebun add -D vitepress如果使用 PNPM,会注意到对 @docsearch/js 的 missing peer deps 警告。这不会影响 VitePress 运行。如果希望禁止显示此警告,请将以下内容添加到 package.json:
"pnpm": {
"peerDependencyRules": {
"ignoreMissing": [
"@algolia/client-search",
"search-insights"
]
}
}注意
VitePress 是仅 ESM 的软件包。不要使用 require() 导入它,并确保最新的 package.json 包含 "type": "module",或者更改相关文件的文件扩展名,例如 .vitepress/config.js 到 .mjs/.mts。更多详情请参考 Vite 故障排除指南。此外,在异步 CJS 上下文中,可以使用 await import('vitepress') 代替。
VitePress 附带一个命令行设置向导,可以帮助你构建一个基本项目。安装后,通过运行以下命令启动向导:
npx vitepress initpnpm vitepress inityarn vitepress initbun vitepress initVue 作为 peer dependency
如果打算使用 Vue 组件或 API 进行自定义,还应该明确地将 vue 安装为 dependency。
如果正在构建一个独立的 VitePress 站点,可以在当前目录 (./) 中搭建站点。但是,如果在现有项目中与其他源代码一起安装 VitePress,建议将站点搭建在嵌套目录 (例如 ./docs) 中,以便它与项目的其余部分分开。
假设选择在 ./docs 中搭建 VitePress 项目,生成的文件结构应该是这样的:
├─ docs
│ ├─ .vitepress
│ │ └─ config.js
│ ├─ api-examples.md
│ ├─ markdown-examples.md
│ └─ index.md
└─ package.jsondocs 目录作为 VitePress 站点的项目根目录。.vitepress 目录是 VitePress 配置文件、开发服务器缓存、构建输出和可选主题自定义代码的位置。
配置文件 (.vitepress/config.js) 让你能够自定义 VitePress 站点的各个方面,最基本的选项是站点的标题和描述:
// .vitepress/config.js
export default {
// 站点级选项
title: 'VitePress',
description: 'Just playing around.',
themeConfig: {
// 主题级选项
}
}.vitepress 目录之外的 Markdown 文件被视为源文件。
VitePress 使用 基于文件的路由:每个 .md 文件将在相同的路径被编译成为 .html 文件。例如,index.md 将会被编译成 index.html,可以在生成的 VitePress 站点的根路径 / 进行访问。
该工具还应该将以下 npm 脚本注入到 package.json 中:
{
...
"scripts": {
"docs:dev": "vitepress dev docs",
"docs:build": "vitepress build docs",
"docs:preview": "vitepress preview docs"
},
...
}docs:dev 脚本将启动具有即时热更新的本地开发服务器。使用以下命令运行它:
npm run docs:devpnpm run docs:devyarn docs:devbun run docs:dev除了 npm 脚本,还可以直接调用 VitePress:
npx vitepress dev docspnpm vitepress dev docsyarn vitepress dev docsbun vitepress dev docs开发服务应该会运行在 http://localhost:5173 上。在浏览器中访问 URL 以查看新站点的运行情况吧!