整理下使用 Vitepress 搭建博客过程中使用过的一些资源和方案

主要参考站点

Vitepress 官方文档

VitePress快速上手中文教程,这个站点扩展很全,包括静态部署选择,样式美化,第三方插件等,都是手把手教程,很细

XaviDocs个人技术文档,借鉴了部分 VitePress 的使用经验

vitepress主题 vitepress-theme-async 源码,借鉴了部分对 Vitepress 的配置和操作逻辑,阅读这些代码对你理解 Vitepress 会有很大帮助

晚阳Crown,借鉴了使用 Cloudflare R2 搭建图床以及使用 Cloudflare 管理域名的经验

详细配置参考

下面会列出 Vitepress 使用细节的一些配置参考文章,包括域名、图床、搜索、评论系统、统计文章等模块

暗黑模式切换动画

参考这篇文章

VitePress 切换暗黑模式丝滑动画

使用 DocSearch 搜索

官方教程 Vitepress - Algolia Search

详细教程 VitePress快速上手中文教程 - DocSearch

参考我的配置

import type { DefaultTheme } from 'vitepress'

export const algolia: DefaultTheme.AlgoliaSearchOptions = {
appId: "appid",
apiKey: "apikey",
indexName: 'weizwz',
placeholder: '搜索文档',
translations: {
button: {
buttonText: '搜索文档',
buttonAriaLabel: '搜索文档'
},
modal: {
searchBox: {
resetButtonTitle: '清除查询条件',
resetButtonAriaLabel: '清除查询条件',
cancelButtonText: '取消',
cancelButtonAriaLabel: '取消'
},
startScreen: {
recentSearchesTitle: '搜索历史',
noRecentSearchesText: '没有搜索历史',
saveRecentSearchButtonTitle: '保存至搜索历史',
removeRecentSearchButtonTitle: '从搜索历史中移除',
favoriteSearchesTitle: '收藏',
removeFavoriteSearchButtonTitle: '从收藏中移除'
},
errorScreen: {
titleText: '无法获取结果',
helpText: '你可能需要检查你的网络连接'
},
footer: {
selectText: '选择',
navigateText: '切换',
closeText: '关闭',
searchByText: '搜索提供者'
},
noResultsScreen: {
noResultsText: '无法找到相关结果',
suggestedQueryText: '你可以尝试查询',
reportMissingResultsText: '你认为该查询应该有结果?',
reportMissingResultsLinkText: '点击反馈'
}
}
}
}

添加图片查看器 Fancybox

Fancybox 是一款非常流行且功能强大的 JavaScript 图片查看库,集成可参考这篇文章

VitePress 添加图片查看器 Fancybox

添加不蒜子统计

参考这篇文章

VitePress 添加不蒜子统计

文章统计,自定义首页,归档页,标签页

参考这篇文章

VitePress 统计文章,新建归档页和标签页

其他相关参考资料:

vitepress-theme-async 主题文章统计

Vitepress 新建页面和注册组件

静态部署

部署到 GitHub Pages ,参考文章

VitePress快速上手中文教程 - 部署

主要是建立 GitHub 部署工作流,项目根目录建立文件 .github/workflows/main.yml,我之前的配置如下:

# 将静态内容部署到 GitHub Pages 的简易工作流程
name: Deploy static content to Pages # env:
# VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID }}
# VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID }} on:
# 仅在推送到默认分支时运行。
push:
branches: ['main'],暂停部署到 GitHub pages # 这个选项可以使你手动在 Action tab 页面触发工作流
workflow_dispatch: # 设置 GITHUB_TOKEN 的权限,以允许部署到 GitHub Pages。
permissions:
contents: read
pages: write
id-token: write # 允许一个并发的部署
concurrency:
group: 'pages'
cancel-in-progress: true jobs:
# 构建
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
persist-credentials: false
fetch-depth: 0
# github page deploy
- name: Set up pnpm
uses: pnpm/action-setup@v4
with:
version: 9
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
- name: Setup Pages
uses: actions/configure-pages@v4
- name: Install dependencies
run: pnpm install
- name: Build
run: pnpm run build
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
# Upload dist repository
path: './dist' # 部署
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
needs: build
runs-on: ubuntu-latest
name: Deploy
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4 # vercel deploy
# - name: Restore file modification time
# run: find docs/post -name '*.md' | while read file; do touch -d "$(git log -1 --format="@%ct" "$file")" "$file"; done
# run: "git ls-files -z | while read -d '' path; do touch -d \"$(git log -1 --format=\"@%ct\" \"$path\")\" \"$path\"; done"
# - name: Install Vercel-cli
# run: npm install --global vercel@latest
# - name: Pull Vercel Environment Information
# run: vercel pull --yes --environment=production --token=${{ secrets.VERCEL_TOKEN }}
# - name: Build Project Artifacts
# run: vercel build --prod --token=${{ secrets.VERCEL_TOKEN }}
# - name: Deploy Project Artifacts to Vercel
# run: vercel deploy --prebuilt --prod --token=${{ secrets.VERCEL_TOKEN }}

这个配置,也是可以部署到 Vercel 的,注释掉 github-pages 部分,放开后面的 vercel deploy 部分即可。需要注意构建命令和输出目录,原始构建命令为 npm run docs:build,输出目录 docs/.vitepress/dist

添加 Github Giscus 评论系统

Github Giscus 的好处简单易用,限制的地方在于需要仓库公开,代码必须托管在 Github 上。参考文章

VitePress 添加 Giscus 评论

其他链接:

Github Giscus官网

VitePress 添加评论功能

使用 Cloudflare 管理域名

详细教程:Cloudflare托管域名

如果你的域名在阿里云或者腾讯云,找到域名解析,修改DNS服务器地址为 Cloudflare 上的即可

使用 Cloudflare R2 配置图床

教程:Cloudflare R2对象存储搭建高速免费图床完全指南

这篇文章很详细,先配置 R2,然后使用自定义域名。

注意,配置过程中创建的 API令牌,访问密钥等,需要我们储存起来,方便后续在 PicList 中使用;

第二个需要注意的是,图床我们一般使用 子域名。比如,你在 Cloudflare 上管理的域名为 weizwz.com,R2 的自定义域名你可以输入 p.weizwz.com,然后 Cloudflare 会自动给你添加 子域名解析,实在是在贴心了。

关于图床API的使用,就是上传和删除等操作,这里建议使用工具 PicList官网文档 很详细,包括下载和配置等

由于我们使用的是 Cloudflare R2,重点查看这里 PicList 内置AWS S3 配置

上传配置里,我们可以设置水印,上传时压缩图片,还有图片转换为 webp 格式,进一步减小图片体积

同步配置,参考 设置配置同步,可以在 github/gitee/gitea 中创建一个私有仓库,然后将 PicList 配置上传。

配置同步需要的 GitHub token,点击GitHub上的个人头像,Settings,拉到最下面点击 Developer settings,然后会跳转到新界面,按下图创建

创建好后,复制 token,粘贴到 PicList 配置里,然后就可以上传你的配置到仓库了。

使用 Cloudflar Pages 托管网站

参考文章:Cloudflare Pages免费部署Hexo博客

这篇文章中的博客是 Hexo 框架,因此需要修改构建配置,我的构建命令是 pnpm i && pnpm run build,构建输出 ./dist。这是因为我对 Vitepress 原始构建配置有修改,如果你没有修改这块的话,

构建命令应该是 pnpm i && vitepress build docs,输入目录 docs/.vitepress/dist

构建监听分支,默认主分支 main,当 main 分支有修改时,Cloudflare 将自动构建部署。

使用 Twikoo 评论系统

Twikoo 评论,需要部署前后端,包括数据库,操作略有复杂,但是不限制代码托管和服务托管,自定义程度更高

Twikoo官方文档 ,非常详细

先建立 MongoDB Atlas 数据库

然后选择云厂商部署,我这里选择的 Vercel 部署,因为操作相对简单,使用 Cloudflare workers 部署 限制较多,部署成功后,修改默认域名为你的子域名,需要去你的域名管理那上修改 DNS 解析。

以 Cloudflar 为例,添加 CNAME 类型,子域名 twikoo,内容 cname.vercel-dns.com

后端部署完成后,需要前端项目也集成,修改我们的 Vitepress 项目,参考下面链接

VitePress 集成 twikoo 参考解决方案

总之步骤就是:pnpm install twikoo -> 封装 Twikoo.vue 组件 -> 插入 Layout 插槽

前后端都处理好后,界面就能正常展示了,但是我们还要处理下邮件功能

首次打开设置按钮后,会有设置密码框,设置一个复杂密码并记住。然后进入配置管理,选择邮件通知

按照提示输入你的邮箱,邮箱授权码等即可。最后有个邮件测试,测试后,你能收到一封邮件,说明功能可用了

暂时只有这些,后续有新的内容时再补充……

Vitepress 建站资源汇总的更多相关文章

  1. b站编程课程资源汇总

    b站编程课程资源汇总 一.总结 一句话总结: b站的编程资源很多,而且很良心 二.编程课程资源汇总 b站看到的,分享给大家 https://www.bilibili.com/video/av50680 ...

  2. Portal:十大免费建站程序推荐

    TOP1 独立网店系统 ShopEx,是上海商派网络科技有限公司推出的一个网上商店系列程序.是目前网店软件行业内比较知名的公司.ShopEx旗下的网上商店系统.网上商城系统以及丰富的网商工具,以专业的 ...

  3. (转) Web 建站技术中,HTML、HTML5、XHTML、CSS、SQL、JavaScript、PHP、ASP.NET、Web Services 是什么?

    Web 建站技术中,HTML.HTML5.XHTML.CSS.SQL.JavaScript.PHP.ASP.NET.Web Services 是什么? 建站有很多技术,如 HTML.HTML5.XHT ...

  4. 建站服务器的最优选择之Windows Or Linux

    转载于:http://www.0553114.com/news/detail-702287.html 不管是个人建站,还是中小型企业建站,选择一款合适的主机是站长朋友们共同的心愿.主机是选择Windo ...

  5. 开源CMS建站项目DNN研究与心得

    DNN (Dotnetnuke) 首先是开源的,并且采用BSD开源协议,也就是说你可以任意修改源代码.传播.作为商品出售,仅有的要求就是保留源代码中的版权文字,这就解决了我多年来的心病:我知道动网新闻 ...

  6. 数据可视化的优秀入门书籍有哪些,D3.js 学习资源汇总

    习·D3.js 学习资源汇总 除了D3.js自身以外,许多可视化工具包都是基于D3开发的,所以对D3的学习就显得很重要了,当然如果已经有了Javascript的经验,学起来也会不费力些. Github ...

  7. [站点部署_01]wordpress建站网页响应速度慢

    最近可能非常多人发现站点打开速度变慢.这里分享一下该问题的定位方法. 我在本地部署了一个wordpress站点,近几天突然发现站点訪问速度奇慢,实在不能忍.于是採用例如以下方法攻克了这个问题: 1)使 ...

  8. 来选择一款适合你网站的CMS建站程序吧

    1:首页我们要搞清楚什么叫cms? ContentManagementSystem就是cms的全名,意思就是内容管理系统.cms整站系统是以文章系统为核心,增加用户需要的模块,如文章.图片.下载等,提 ...

  9. 新手站长选择WordPress程序建站需要注意的8个问题

    文章出自:http://www.banwagongvps.com/119.html 如今我们不论是出于个人的兴趣爱好,还是出于我们希望通过搭建自己的网站获利的动机,入门级别的都变得非 常的简单,我们只 ...

  10. 如何选择适合自己的CMS建站系统

             在互联网发展突飞猛进的今天,可谓”得市场者得天下”,而电商已成为占据市场速度最快.范围最广的手段,进而网站建设也逐渐引起商家重视,并深入到了企业和个体的发展战略之中. 如今企业建站已 ...

随机推荐

  1. AI定制祝福视频,广州塔、动态彩灯、LED表白,直播互动新玩法(附下载链接)

    在追剧的时候经常能看到一些浪漫的告白桥段,男主用圣诞彩灯表白.用城市标志性建筑的LED表白,或者在五光十色的烟花绽放后刻下女主角的名字,充满了仪式感和氛围感~ 现在,这样的表白效果用AI软件就能实现了 ...

  2. redis如何设置密码

    密码设置 这里简单介绍一下redis如何设置密码redis密码设置有两种方式,一种需要重启redis服务,一种不需要重启redis服务. 首先,介绍一下需要重启redis服务的设置方式即找到redis ...

  3. SQL注入之时间盲注

    SQL注入之时间盲注 一.时间盲注原理 时间盲注技术的核心在于巧妙地运用数据库中的时间延迟函数(例如 MySQL 的 SLEEP() 函数或 PostgreSQL 的 PG_SLEEP() 函数)来验 ...

  4. windows系统之netstatt、telnet、tasklist taskkill四大常用网络运维命令

    windows系统之netstatt.telnet.tasklist  taskkill 四大常用网络运维命令 Netstat 查看网络状态信息 [用法格式] NETSTAT [-a] [-b] [- ...

  5. sql中的inerval函数使用方法

    在SQL中,INTERVAL函数可以用于添加或减去特定的时间间隔.其基本语法如下: SELECT field1, field2, ... FROM table_name WHERE condition ...

  6. STM32的SYSTICK 定时器(系统滴答定时器)

    什么是SysTick? 这是一个24位的系统节拍定时器system tick timer,SysTick,具有自动重载和溢出中断功能,所有基于Cortex_M3处理器的微控制器都可以由这个定时器获得一 ...

  7. mybatis mysql count(*) 返回结果为null的解决

    具体错误信息: org.apache.ibatis.binding.BindingException: Mapper method 'com.xx.xx.xx.xx.xx.getCount attem ...

  8. Flink学习(五) Flink 的核心语义和架构模型

    Flink 的核心语义和架构模型我们在讲解 Flink 程序的编程模型之前,先来了解一下 Flink 中的 Streams.State.Time 等核心概念和基础语义,以及 Flink 提供的不同层级 ...

  9. Go1.24版本终于来了!各位开发者,准备好迎接这些激动人心的新功能了吗?让我们一起来探讨下Go1.24中有哪些精彩的亮点?

    前言 Gopher们,Go 1.24.0 正式发布了!与 Go 1.23.0 相比,这个版本带来了众多改进.让我们一同看看 Go 1.24.0 都有哪些新变化吧! 在 Windows 下,请在 htt ...

  10. 08_使用python 内置 json 实现数据本地持久化

    使用python 内置 json 实现数据本地持久化 四个json函数 函数 json.load() 将本地json数据文件读取出来,并以列表形式返回从文件对象中读取 JSON 格式的字符串,并将其反 ...