1. 概述
2. vitpress 初步
4. 创作你的内容吧!
3. vitpress 配置
5. Gitee Pages
附:使用https部署的补充
我们都希望拥有自己的个人网站,但是由于很多人不懂技术,使得制作网站有很高的门槛和成本。但是如今,哪怕你是小白——完全不懂编程,也可以通过 vitepress 帮助我们快速地生成我们的个人站点。VitePress 是一个静态站点生成器 (SSG),旨在构建快速、以内容为中心的网站,它可以获取用 Markdown 编写的源内容,为其应用主题,并生成可以轻松部署到任何地方的静态 HTML 页面。
哦,对了!你可能还不知道如何才能将你的个人网站部署到公网上,又或者是不想购买自己的服务器——笔记服务器的成本是比较高昂的,即使你购买了云服务器,如阿里云、腾讯云、华为云。但是如果你只是想发布自己的个人博客,或者一些简单的信息的站点的话,都是很不划算的,这时你可以考虑使用免费的 Gitee Pages 进行托管。
本文从零开始手把手的教你如何使用本文从零开始手把手的教你如何使用 vitpress 制作自己的个人网站,并将其托管到 Gitee Pages 上面。
安装 NodeJS。如果你的 Windows 电脑上有安装 choco 包管理器,可以再 powershell/命令行工具 中通过命令安装:
choco install nodejs
当然也可以去官网下载安装包:
https://nodejs.org/en/
现在新建一个文件夹,并在该文件夹内运行项目初始化命令:
npm init -y
得到了一个新项目,它将用于放置我们制作的静态网站及其所用资料。
在该文件夹内运行以下命令:
npm install -D vitepress
# 或者使用 pnpm
pnpm i -D vitepress
表示安装 vitepress 作为开发依赖。
接着我们执行 vitepress 初始化,使这个项目成为一个 vitepress 项目:
npx vitepress init
# 或者使用 pnpm
pnpm exec vitepress init
如果全局安装 vitepress ,可以使用 vitepress dev
运行开发服务:
vitepress dev
仅在当前项目安装时,需要使用 npx
或者 pnpm exec
运行,以寻找当前项目模块的 ./bin 目录:
npx vitepress dev
#或者
pnpm exec vitepress dev
成功运行后可以在浏览器中访问由 cli 默认初始化出来的 vitepress 站点:
vitepress build
同理,若在当前项目安装 vitepress 时运行:
npx vitepress build
#或者
pnpm exec vitepress build
Note 最新版本的 vitepress 自带的 cli 可以帮我们完成这一节的工作,只需要你运行
vitepress
初始化命令时选上此项:
还记得我们使用命令“npm init -y
”(或者“pnpm init
”)初始化项目吗,如果你仔细观察会发现项目下下面生成了一个名为 pacakage.json
的文件。这个文件是一个用于记录项目配置信息的本文文件。
我们在该文件的scripts
字段下添加以下子键值对,其中键表示命令名、值表示命令对应的内容:
{
// ...已省略该文件的其它内容
"scripts": {
"docs:dev": "vitepress dev docs",
"docs:build": "vitepress build docs",
"docs:preview": "vitepress preview docs"
},
}
这样我们就可以使用 npm run 命令名
的方式快速执行相应的命令了。比如:
npm run docs:dev
相当于在项目中执行:
vitepress dev docs
依此类推。
对于完全不了解技术的小白,有必要介绍一下路由的概念。
故名思意,路由就是路径上哪儿。简单说来路由表示的是不同网页的访问地址,就像现实生活表示一户人家、一个机构、一家公司。
路由 一词的来源与其实工程技术并无关系,它很早就有,仅仅是一个生活中很常见的词汇,含以上表示来自哪里。随着二十世纪电气的到来,电气电子相关技术的蓬勃发展,控制技术、通信工程等相关专业应运而生。不论是从最早在电气控制领域的 工业控制网络 到后来的 计算机网络,随着生产力发展的需要都引入了很多来源于生活的概念,路由 就是其中之一。在网络工程领域,路由(routing)是指分组从源到目的地时,决定端到端路径的网络范围的进程。后来随着互联网技术的发展,从网络工程领域再次借用和引申了 路由 这一概念。在用户界面系统中,比如我们所熟知的 web,路由简单的来说就是根据用户请求的 URL 链接来判断对应的处理程序,并返回处理结果。1
与编程项目中复杂的路由系统不一样,VitePress 中提供了所谓 基于文件的路由(File-Based Routing)。
这就是说, VitePress 生成的 HTML 页面是从源 Markdown 文件的目录结构映射的。
举个例子来说明,给定以下目录结构:
.
├─ guide
│ ├─ getting-started.md
│ └─ index.md
├─ index.md
└─ prologue.md
这在使用 build 后对应成相应目录结构的的 html:
index.md --> /index.html (accessible as /)
prologue.md --> /prologue.html
guide/index.md --> /guide/index.html (accessible as /guide/)
guide/getting-started.md --> /guide/getting-started.html
要能够正确 build 得到你想要的 html,则需要搞清楚两个概念,分别是:
根目录 和 源目录
项目根目录 是 VitePress 将尝试查找特殊目录的地方。该目录是 VitePress 配置文件、开发服务器缓存、构建输出 和 可选主题自定义代码 的保留位置。
当运行vitepress dev
或从vitepress build
命令行运行时,VitePress 将使用当前工作目录作为项目根目录。要将子目录指定为 root,您需要将相对路径传递给命令。例如,如果您的 VitePress 项目位于./docs
中,则应运行:
vitepress dev docs
源目录 是 Markdown 源文件 所在的位置。
默认情况下,它与项目根目录相同。
但是,你也可以通过 srcDir
(该选项的默认值为.
,即根目录) 配置选项对其进行配置:
export default {
srcDir: './src'
}
在页面之间链接时,可以同时使用绝对路径和相对路径。请注意,尽管.md
和.html
扩展名都可以使用,但最佳做法是省略文件扩展名,以便 VitePress 可以根据您的配置生成最终 URL。
[Getting Started](./getting-started)
[Getting Started](../guide/getting-started)
[Getting Started](./getting-started.md)
[Getting Started](./getting-started.html)
在 .vitepress
目录下的 config.js
文件是 vitpress 的配置文件。vitpress 配置 实际上就是定义一些选项。看起来就像这样:
// .vitepress/config.js
export default {
// 站点级选项(站点配置)
title: 'VitePress',
description: 'Just playing around.',
themeConfig: {
// 主题级选项(主题配置)
}
}
依据其作用层级,分为 站点配置 、 页面配置 和 主题配置 三部分:
不论是 数据科学家、程序员还是网络作家,掌握 Markdown 就像一个普通办公室工作人员掌握 office word 或者 wps word 那样重要——如今你看到的公众号、博客等等大多数都是使用 MarkDown完成的。
# 一级标题
## 二级标题
### 三级标题
#### 四级标题
##### 五级标题
###### 六级标题
*强调文本* _强调文本_
**加粗文本** __加粗文本__
==标记文本==
~~删除文本~~
> 引用文本
H~2~O is是液体。
2^10^ 运算结果是 1024。
项目
* 项目
+ 项目
1. 项目1
2. 项目2
3. 项目3
- [ ] 计划任务
- [x] 完成任务
效果如下:
项目
| title1 | title2 | title3 |
|:-|-:|:-:|
| 左对齐 | 右对齐 | 居中对齐 |
效果如下:
title1 | title2 | title3 |
---|---|---|
左对齐 | 右对齐 | 居中对齐 |
其中:
:
不写;|
可以省略不写。如:
title1 | title2 | title3
:-|-:|-
左对齐 | 右对齐 | 居中对齐
你可以使用 $$表示一个公式块的开头和结束,在其中编辑 mathJax/ katex 公式
$$
c = a^2 + b^2 \\
\Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,.
$$
c = a 2 + b 2 Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t . c = a^2 + b^2 \\ \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. c=a2+b2Γ(z)=∫0∞tz−1e−tdt.
你可以写多个公式、每个公式占用一行,\\
表示公式之间的换行。
VitePress 带有内置的 Markdown 扩展,这个扩展用于增加一些特定的 Markdown 语法。
::: info
This is an info box.
:::
::: tip
This is a tip.
:::
::: warning
This is a warning.
:::
::: danger
This is a dangerous warning.
:::
::: details
This is a details block.
:::
::: info
This is an info box.
:::
::: tip
This is a tip.
:::
::: warning
This is a warning.
:::
::: danger
This is a dangerous warning.
:::
::: details
This is a details block.
:::
要在 vitpress 项目中使用 vue 我们首先要在项目下安装vue作为依赖,就像一开始的时候我们安装 vitpress 那样:
npm install vue
# 或 如果你用 pnpm
pnpm i vue
在 VitePress 中,每个 Markdown 文件都被编译成 HTML,然后作为 Vue 单文件组件进行处理。这意味着你可以在 Markdown 中使用任何 Vue 功能,包括动态模板、使用 Vue 组件或通过添加 标签来任意页面内 Vue 组件逻辑。
和 Github Pages 一样,Gitee Pages 是一个免费的静态网页托管服务,您可以使用 Gitee Pages 托管博客、项目官网等静态网页,可以看作 Github Pages 的国内版。
Gitee Pages 是面向 Gitee 用户开放的静态页面搭建托管服务,用户可以通过默认提供的域名 gitee.io 来发布自己的站点,它支持除了原始的HTML,支持Jekyll、Hugo、Hexo 等静态网站生成引擎,可以很方便的在线编译这几类静态站点项目。我们这里使用的是 vitpress 打包构建之后的原生 html 进行托管。
Gitee Pages 分为免费版和付费版,我们这里所使用的是其免费版本。付费版 称之为 Gitee Pages Pro 拥有更多地针对于企业级地功能,如 自定义域名、支持发布 仓库中 某个目录( 例如你可以将仓库的文档目录 doc 发布成静态网页 )等等。
进入 gitee(码云)登陆页面 https://gitee.com/login,如果你此时还未注册 gitee 账号请依据页面上的提示自行进行注册,如果已经注册,请直接登录:
登陆后点击右上角的头像,点击“个人主页”,就可以进入你的 gitee 主页了。
在 gitee 和 github 中仓库是用来存储文件地,对于程序开发者来说主要是用来存储我们的代码,这里我们用它来存储 使用 vitepress 构建好的个人网站相关文件。
点击 gitee 页面右上角的 + 号,在下拉菜单中选择新建仓库。
填写仓库信息:
我们只有将项目设置为开源
才能让别人访问到我们的站点。但是由于 22 年以后,gitee 审核机制要求所带来的限制,让我们无法在创建项目时直接创建公开的仓库,如需创建公开仓库只能在创建仓库后通过 “仓库设置” 中修改为公开。创建完成后你会看到这样的界面:
现在我们还没有上传文件,如果我们点击 “初始化 readme” 文件就会自动生成两个本文文件,这样你会看到向文件夹一样的结构(虽然这不是必须的):
现在你需要知道的是如何获取你的这个新建项目的仓库地址,这在我们之后使用 git
工具进行提交静态页面代码时都需要使用到。
Linux 上用二进制安装程序来安装基本的 Git 工具,可以使用发行版包含的基础软件包管理工具来安装。 例如基于 Debian 的发行版上(如 ubuntu)可以使用
sudo apt install git-all
Fedora 或与之紧密相关的基于 RPM 的发行版(如如 RHEL 或 CentOS)你可以使用 dnf:
sudo apt install git-all
在 Windows 上可以通过以下方式下载对应于你系统的版本安装:
版本类型 | 下载地址 |
---|---|
用于 Windows 安装程序的 32 位 Git | https://github.com/git-for-windows/git/releases/download/v2.39.2.windows.1/Git-2.39.2-32-bit.exe](https://github.com/git-for-windows/git/releases/download/v2.39.2.windows.1/Git-2.39.2-32-bit.exe) |
用于 Windows 安装程序的 64 位 Git | https://github.com/git-for-windows/git/releases/download/v2.39.2.windows.1/Git-2.39.2-64-bit.exe |
32 位 Git for Windows 便携版 | https://github.com/git-for-windows/git/releases/download/v2.39.2.windows.1/PortableGit-2.39.2-32-bit.7z.exe |
64 位 Git for Windows 便携版 | https://github.com/git-for-windows/git/releases/download/v2.39.2.windows.1/PortableGit-2.39.2-64-bit.7z.exe |
或者使用 Choco 包管理工具(请参考博文《Windows中使用包管理器(类似于apt/yum的) - Chocolatey》)
choco install git
以及 winget 工具。(需要安装 winget 工具)打开 powershell 输入:
winget install --id Git.Git -e --source winget
在 Mac 上安装 Git 最简单的方法是安装 Xcode Command Line Tools,在 Terminal 里尝试首次运行 git 命令即可:
git --version
如果没有安装过命令行开发者工具,将会提示你安装。
使用 HTTPS 协议需要一个SSH 证书。关于什么是 https、ssh,感兴趣的读者可以参考我的另外一篇博客《用户认证、权限、安全》。
作为一个个人站点而言,我们可以通过Freessl 获取免费 SSL 服务,这个品牌似乎也是 和码云(gitee)同一家哦那公司旗下的产品。
在这里输入你的域名,点击 创建免费的SSL证书,跳转到登陆页面,单独进行注册并登陆:
登陆后进行 ACME 域名配置。先会校验你的域名,填写你的域名值,紧接着是 DCV 配置,它会更具你填写的路由进行检测。
如果你 不适用托管,而是将站点是部署在你个人的服务器上,你需要登陆你的域名解析服务提供商的控制台,如 万网(阿里云)、腾讯云、华为云等等,在 DSN解析处配置你的域名。即 选择“添加记录”,将上述主机记录、记录类型(CNAME)、记录值填入,并确定使之生效。
修改完成之后意味着你的记录类型为 CNAME,记录值不再是以前的ipv4那样的地址。看起来就像这样:
curl https://get.acme.sh | sh -s email=my@example.com
如果上面官方下载地址失败 或者 太慢,可以选用国内的备用地址
curl https://gitcode.net/cert/cn-acme.sh/-/raw/master/install.sh?inline=false | sh -s email=my@example.com
注意:安装完成后,再重新打开命令行(如果是 SSH,选择重新连接),以使acme.sh命令生效。如果实在不能生效则手动进入 /root/.acme.sh
cd /root/.acme.sh
也可以从github clone一下代码:
git clone https://github.com/acmesh-official/acme.sh.git
进入文件夹
cd acme.sh
然后运行部署命令(注意替换掉xxxxxxxxxxxxxx)
sh acme.sh --issue -d thispage.tech --dns dns_dp --server https://acme.freessl.cn/v2/DV90/directory/xxxxxxxxxxxxxx
例如
sh acme.sh --install-cert -d example.com \
--key-file /path/to/keyfile/in/nginx/key.pem \
--fullchain-file /path/to/fullchain/nginx/cert.pem \
--reloadcmd "service nginx force-reload"
注
部署过程可能会需要不断重试
参考博客《为koa项目添加路由模块》:https://blog.csdn.net/qq_28550263/article/details/129828590 ↩︎