赞
踩
之前我们写过一篇关于如何自动构建和发布个人博客的文章,当时是使用VuePress和GitLab。GitLab持续集成部署CI/CD初探:如何自动构建和发布个人前端博客
现在换了Vue3和Vite,使用VitePress在Github上又搭建了一个博客。博客地址:
下面就介绍一下,如何使用这几个工具创建个人博客。
VitePress是一个静态网站生成器,内容使用Markdown语法,配置简单,同时附带了一个默认主题,即使不需要写前端代码,也可以生成一个静态网站。底层使用Vite和Vue3,前端开发者可方便的进行修改或定制。
注意:下面所述的安装过程和版本说明皆参考与对应工具的官网,后续可能会有更新或变动,以官网为准。
npm install -g pnpm
。# 初始化node工程
pnpm init
# 安装vitepress
pnpm add -D vitepress
# 初始化vitepress
pnpm exec vitepress init
初始化vitepress时的注意事项
./docs
Default Theme
。Default Theme + Customization
package.json
中初始化之后再查看package.json
,发现scripts中有了几条命令,这里说明下使用方法:
# 安装依赖
pnpm install
# 开发模式启动
pnpm docs:dev
# 手动构建
pnpm docs:build
# 预览构建成果
pnpm docs:preview
启动开发模式,把命令行中出现的网址复制到浏览器中,即可预览效果。
为了方便参考,这里列出我博客的工程目录。
jzplp.github.io ├─.github # github配置 │ └─workflows # 自动构建部署配置 ├─bin # 执行脚本 ├─components # vue组件 ├─docs # 博客内容 │ ├─.vitepress │ │ ├─config.ts # vitepress配置 │ │ ├─cache # 缓存文件,可忽略提交 │ │ ├─dist # 构建包,可忽略提交 │ │ └─theme # 样式和主题 │ ├─index.md # 博客首页 │ ├─2023 # 按照年份存放博文 │ ├─2022 │ ├─... # 更多博客目录 │ └─public # 博客使用的静态资源 ├─node_modules # 依赖目录,可忽略提交 ├─.gitignore # git提交忽略配置 ├─package.json # node.js配置 ├─pnpm-lock.yaml # 依赖的锁定版本号 └─README.md # 工程说明
目录中部分文件的作用会在下面描述。
启动后可以看到,默认提供了一个首页和几个内页的参考。可以在docs
目录内创建Markdown文件,撰写文章,在docs/.vitepress/config.ts
中配置菜单路由。配置示例:
import { defineConfig } from 'vitepress' export default defineConfig({ lang: 'zh-CN', title: "漂流瓶jz的博客", themeConfig: { nav: [ { text: '首页', link: '/' }, ], sidebar: [ { text: '2023', items: [ { text: '使用VitePress和Github搭建个人博客,可以自动构建和发布', link: '/2023/blog-github' }, ], }, ], socialLinks: [ { icon: 'github', link: 'https://github.com/jzplp/jzplp.github.io' } ] } })
对应的文章在目录中的位置:docs/2023/blog-github.md
。
VitePress在Markdown功能的基础上也进行了很多扩展,可以参考VitePress文档。
如果默认主题不符合你的需要,可以对主题进行修改。注意修改主题需要前端的CSS知识。docs/.vitepress/theme/style.css
中是主题的CSS样式。
可以用浏览器提供的检查元素功能查看希望调整的CSS变量/属性,进行修改。例如希望使左边的导航栏宽度增加:
:root {
--vp-sidebar-width: 340px;
}
如果希望使博客有更好的展示效果,或者有一些特殊的需求,可以使用Vue来实现。注意该功能需要前端开发知识。
首先VitePress在MarkDown中即支持Vue的Template语法,MarkDown本身也支持HTML。例如:
{{ 1 + 1 }}
<span v-for="i in 3">{{ i }}</span>
同时也支持在MarkDown中使用<script>
和<style>
等单文件组件的写法,也支持引入Components等。
例如在我的博客中,使用Component来渲染Latex公式。文件位置:components/latexDisplay.vue
<template> <span ref="latex" class="katex" v-html="rawHTML"></span> </template> <script lang="ts" setup> import katex from "katex"; import "katex/dist/katex.css"; import { useSlots, onMounted } from 'vue' const slots = useSlots() const anyFun = () => { return [{ children: '' }] } const rawHTML: string = katex.renderToString((slots.default || anyFun)()[0].children, { throwOnError: false, }) </script>
使用Component,文件位置:docs/2022/vue-latex.md
<latexDisplay> c = \pm\sqrt{a^2 + b^2} </latexDisplay>
<script setup>
import latexDisplay from '../../components/latexDisplay.vue'
</script>
效果:
c
=
±
a
2
+
b
2
c = \pm\sqrt{a^2 + b^2}
c=±a2+b2
当构建好博客之后,我们现在本地进行构建和预览。命令在上面的安装过程一节中有描述。
在GitHub上创建仓库,对于名称有特殊要求,为用户名.github.io
。例如我的用户名为jzplp,仓库名称则为jzplp.github.io
。
创建仓库后,将我们刚刚创建的博客工程上传到GitHub仓库中。注意并不是所有文件都需要上传,因此我们先需要在工程根目录创建.gitignore
,写入我们要忽略提交的文件,再进行上传。
node_modules
docs/.vitepress/cache
docs/.vitepress/dist
上传工程代码的命令:
git add .
git commit -m "创建博客工程"
git push
上一步我们上传的仅仅是工程的源代码。还需要上传构建成果,才能发布博客网站。我们在工程根目录创建文件bin/autoDeploy.bat
,这是一个Windows系统下使用的脚本文件。
call pnpm docs:build
cd docs/.vitepress/dist
git init
git add -A
git commit -m "auto construct blog"
git push -f https://github.com/jzplp/jzplp.github.io.git master:gh-pages
注意里面的push地址需要改成你自己的。
文件内容即是我们的构建和发布流程:
gh-pages
分支中。如果使用非Windows系统,对该脚本文件后缀名和内容进行适当修改即可。
我们在package.json
的scripts
中增加一条命令:
"deploy:win": "powershell bin/autoDeploy.bat"
此时可以执行这条命令,即可完成dist构建包的上传。
pnpm deploy:win
我们进入你创建的GitHub仓库的配置,具体位置在Settings -> Pages -> Build and deployment -> Source
。来源选择Deploy from a branch
,即选择一个分支。
选择我们刚刚上传的gh-pages
分支,根目录,然后保存。
然后就可以进入我们的博客网站查看效果啦。网站地址即是我们刚刚建立的仓库名称,即是用户名.github.io
。例如我的网站是jzplp.github.io
。
使用上面描述的方法,我们每次写完博客,提交工程代码后,还需要手动构建,更新分支并发布。构建过程在本地电脑上。
那么有没有方法让每次提交工程代码后,自动构建并发布呢?我们使用GitHub Actions就能做到这一点。而且GitHub还提供了服务器,我们可以把构建过程放到服务器中进行。
首先创建配置文件,位置.github/workflows/deploy.yml
。
name: Deploy on: # Runs on pushes targeting the default branch push: branches: ["master"] # Allows you to run this workflow manually from the Actions tab workflow_dispatch: jobs: deploy: runs-on: ubuntu-latest permissions: pages: write id-token: write environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} steps: - uses: actions/checkout@v3 with: fetch-depth: 0 - uses: pnpm/action-setup@v2 with: version: 7 - uses: actions/setup-node@v3 with: node-version: 16 cache: pnpm - run: pnpm install - name: Build run: pnpm run docs:build - uses: actions/configure-pages@v2 - uses: actions/upload-pages-artifact@v1 with: path: docs/.vitepress/dist - name: Deploy id: deployment uses: actions/deploy-pages@v1
GitHub Actions的环境中提供了很多预置的配置和工具,例如Node.js,pnpm等等,我们直接使用即可。如果你的配置和文中上述流程一致,那么直接复制该文件内容到你的工程即可。之后上传到工程代码GitHub仓库中。如果想了解更多,可以参考GitHub Actions文档以及其他人的配置。
然后打开GitHub配置,位置依旧在Settings -> Pages -> Build and deployment -> Source
。将之前设置的Deploy from a branch
,修改为GitHub Actions
。
这时候我们每次写完博客,将工程代码push到GitHub仓库之后,GitHub会自动触发构建和发布流程,更新博客网站。上一节中的手动构建和上传dist步骤就不需要执行了。
截止到这里,我们的博客就完成啦。
查看很多用户的GitHub首页时,都会发现首页会有一个区域可以展示用户自定义的内容,一般都是用户的个人简介。例如我的:
制作这样一个简介也很简单,下面就描述一下方法。
README.md
。README.md
中使用MarkDown语法写入个人简介,并提交。然后返回GitHub用户首页,就可以看到你的个人简介啦。
<img align="right" src="https://github-readme-stats.vercel.app/api?username=jzplp&show_icons=true&icon_color=CE1D2D&text_color=718096&bg_color=ffffff&hide_title=true" />
注意其中的jzplp要改成你自己的用户名。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。