VitePress 系列教程:VitePress 基本配置 #3
docs 目录下的 .vitepress
目录是专门用来存放配置文件的,在里面新建一个 config.js
配置文件,结构如下
.
├─ docs
│ ├─ .vitepress
│ │ └─ config.js
│ └─ index.md
└─ package.json
config.js
导出一个 js 对象,用来配置项目当中的一些信息。
export default {
title: 'zhengxin', // 站点标题
description: '正心的全栈编程笔记', // mate 标签 description,多用于搜索引擎抓取摘要
}
导航栏
右侧导航
可以在 themeConfig.nav 配置右侧导航,并且点击可以跳转我们指定页面。
export default {
title: 'zhengxin',// 站点标题
description: '正心的全栈编程笔记', // mate 标签 description,多用于搜索引擎抓取摘要
themeConfig: { // 主题配置
// siteTitle: "正心全栈编程", // 站点首页标题
logo: "logo.svg", // 站点 logo
nav: [
{text: "博客", link: "/articles/"},
{text: "Python", link: "/python/"},
{text: "前端", link: "/frontend/"},
{text: 'gitee', link: 'https://gitee.com/zhengxinonly'}, // 外链
], // 右上角头部导航栏
}
}
同时在 docs 下新建 articles/index.md 和 python/index.md
此时我们页面即可展示 nva 并且支持了跳转本地 markdown 文件以及外部链接
我们还可以这样嵌套配置,使得导航栏出现下拉选项
// 项目的配置文件目录
export default {
themeConfig: {
logo: "logo.svg", // 站点 logo
nav: [
{text: "博客", link: "/articles/组件库环境搭建"},
{text: "Python", link: "/python/"},
{text: "前端", link: "/frontend/"},
{text: 'gitee', link: 'https://gitee.com/zhengxinonly'}, // 外链
{ // 右上角下拉导航栏
text: "后端",
items: [
{text: 'Linux', link: '/linux/'},
{text: 'Redis', link: '/redis/'},
{ // 带分割线的导航栏
items: [
{text: "MySql", link: "/mysql/"},
{text: "sqlalchemy", link: "/sqlalchemy/"},
],
},
{
items: [
{text: "nginx", link: "/nginx/"},
{text: "gunicorn", link: "/gunicorn/"},
],
},
]
}
], // 右上角头部导航栏
}
}
社交链接
使用 themeConfig.socialLinks 可以配置社交链接,目前支持的有
type SocialLinkIcon =
| 'discord'
| 'facebook'
| 'github'
| 'instagram'
| 'linkedin'
| 'slack'
| 'twitter'
| 'youtube'
| { svg: string }
配置如下
socialLinks: [
{icon: "github", link: "https://gitee.com/zhengxinonly"},
// You can also add custom icons by passing SVG as string:
{
icon: {
svg: '<svg t="1676025513460" class="icon" viewBox="0 0 1129 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2745" width="200" height="200"><path d="M234.909 9.656a80.468 80.468 0 0 1 68.398 0 167.374 167.374 0 0 1 41.843 30.578l160.937 140.82h115.07l160.936-140.82a168.983 168.983 0 0 1 41.843-30.578A80.468 80.468 0 0 1 930.96 76.445a80.468 80.468 0 0 1-17.703 53.914 449.818 449.818 0 0 1-35.406 32.187 232.553 232.553 0 0 1-22.531 18.508h100.585a170.593 170.593 0 0 1 118.289 53.109 171.397 171.397 0 0 1 53.914 118.288v462.693a325.897 325.897 0 0 1-4.024 70.007 178.64 178.64 0 0 1-80.468 112.656 173.007 173.007 0 0 1-92.539 25.75h-738.7a341.186 341.186 0 0 1-72.421-4.024A177.835 177.835 0 0 1 28.91 939.065a172.202 172.202 0 0 1-27.36-92.539V388.662a360.498 360.498 0 0 1 0-66.789A177.03 177.03 0 0 1 162.487 178.64h105.414c-16.899-12.07-31.383-26.555-46.672-39.43a80.468 80.468 0 0 1-25.75-65.984 80.468 80.468 0 0 1 39.43-63.57M216.4 321.873a80.468 80.468 0 0 0-63.57 57.937 108.632 108.632 0 0 0 0 30.578v380.615a80.468 80.468 0 0 0 55.523 80.469 106.218 106.218 0 0 0 34.601 5.632h654.208a80.468 80.468 0 0 0 76.444-47.476 112.656 112.656 0 0 0 8.047-53.109v-354.06a135.187 135.187 0 0 0 0-38.625 80.468 80.468 0 0 0-52.304-54.719 129.554 129.554 0 0 0-49.89-7.242H254.22a268.764 268.764 0 0 0-37.82 0z m0 0" fill="#20B0E3" p-id="2746"></path><path d="M348.369 447.404a80.468 80.468 0 0 1 55.523 18.507 80.468 80.468 0 0 1 28.164 59.547v80.468a80.468 80.468 0 0 1-16.094 51.5 80.468 80.468 0 0 1-131.968-9.656 104.609 104.609 0 0 1-10.46-54.719v-80.468a80.468 80.468 0 0 1 70.007-67.593z m416.02 0a80.468 80.468 0 0 1 86.102 75.64v80.468a94.148 94.148 0 0 1-12.07 53.11 80.468 80.468 0 0 1-132.773 0 95.757 95.757 0 0 1-12.875-57.133V519.02a80.468 80.468 0 0 1 70.007-70.812z m0 0" fill="#20B0E3" p-id="2747"></path></svg>',
}, link: "https://space.bilibili.com/162101364",
},] // 右上角社交链接
侧边栏
侧边栏可以在 themeConfig.Sidebar 中配置,其实和 nav 配置差不多
sidebar: [
{
text: "前端",
items: [
{
text: "前端基础",
link: "/frontend/index.md",
},
{text: "HTML", link: "/frontend/HTML"},
{text: "CSS", link: "/frontend/CSS"},
],
},
{
text: "javascript",
items: [
{text: "js 基础", link: "/frontend/javascript",},
{text: "js 进阶", link: "/frontend/javascript2",},
],
},
] // 侧边栏
配合导航需要新建文件,之后的目录结构如下
├─docs
│ │ getting-started.md
│ │ index.md
│ │
│ ├─.vitepress
│ │ │ config.js
│ │ │
│ ├─articles
│ │ gulp 的使用.md
│ │ pina 和 vuex.md
│ │ 组件库环境搭建.md
│ │
│ ├─frontend
│ │ CSS.md
│ │ HTML.md
│ │ index.md
│ │ javascript.md
│ │ javascript2.md
│ │
│ └─python
│ index.md
不过一般不会使用这种方式配置侧边栏,因为这样每个页面都会有侧边栏。我们需要做到仅某些页面才会出现侧边栏。所以我们可以这样配置
sidebar: {
"/frontend/"
:
[
{
text: "前端",
items: [
{
text: "前端基础",
link: "/frontend/index.md",
},
{text: "HTML", link: "/frontend/HTML"},
{text: "CSS", link: "/frontend/CSS"},
],
},
{
text: "javascript",
items: [
{text: "js 基础", link: "/frontend/javascript",},
{text: "js 进阶", link: "/frontend/javascript2",},
],
},
],
}
, // 指定路径的侧边栏
可折叠侧边栏
配置可折叠侧边栏只需将 collapsible
设置为 true
即可,默认初始页面是全部展开页面,如果你需要关闭状态只需要将 collapsed
设置为 true
sidebar: {
"/frontend/"
:
[
{
text: "javascript",
collapsible: true,
collapsed: true,
items: [
{text: "js 基础", link: "/frontend/javascript",},
{text: "js 进阶", link: "/frontend/javascript2",},
],
},
],
}
, // 指定路径的侧边栏
布局模式
官网这章节有详细介绍vitepress中的三种布局模式,分别是
- doc,文档模式
- page,页面模式
- home,首页模式
如果没有指定布局模式,默认使用 doc 文档模式
doc 文档模式
文档模式就是,vitepress 会自动解析 md 内容,并且使用自带的样式
修改 index.md
的内容
---
layout: doc
---
# 标题1
## 标题2
### 标题3
- 分点1
- 分点2
- 分点3
1. 分点1
2. 分点2
3. 分点3
然后就可以看到自带样式的 md 内容
page 页面模式
页面模式就是,vitepress 会自动解析 md 内容,但不会使用自带样式
我们把 index.md
的 layout 改一下
---
layout: page
---
可以看到,内容已经被解析成 html 标签,但没有预设的文档样式,这个模式下可以进行自定义主题等处理
home 首页模式
这是我们主要讲解模式,这个模式下会使用 vitepress 自带的组件来控制首页样式,官网这章节 也详细介绍了这模式
我们先改下 index.md
的内容,直接复制官网内容(懒得写)
---
layout: home
hero:
name: VitePress
text: Vite & Vue powered static site generator.
tagline: Lorem ipsum...
image:
src: /logo.png
alt: VitePress
actions:
- theme: brand
text: Get Started
link: /guide/what-is-vitepress
- theme: alt
text: View on GitHub
link: https://github.com/vuejs/vitepress
---
可以看到,这时候已经是首页样式了
注意:注意缩进,不对可能导致没有内容
首页优化
接下来我们开始对首页进行优化
首页图片处理
我们先选择合适的图片作为图标,当然你也可以不用,把 image 属性去掉即可
在根目录下创建 public
目录,然后把选好的图片放到里面,再修改 image 属性即可
hero:
name: VitePress
text: Vite & Vue powered static site generator.
tagline: Lorem ipsum...
image:
src: /logo.svg
alt: VitePress
更改系统标题
标题与图标
这时候左上角的图标和 tab 栏的标题都还是默认的 VitePress ,我们需要改成我们自己的工程名
1、在根目录下创建 .vitepress
目录,然后创建 config.ts
文件,然后输入以下内容
export default {
// ...
themeConfig: { // 主题配置
siteTitle: "正心全栈编程", // 站点首页标题
logo: "logo.svg", // 站点 logo
},
};
2、每次改配置都需要重启工程
可以看到 tab 的标题,左上角标题都改成系统名了
修改首页展示的图片,其中 logo 的地址对应的是 public 下的图片,目录结构如下所示
.
├─ docs
│ ├─ .vitepress
│ │ └─ config.js
│ ├─ public
│ │ └─ logo.svg
│ └─ index.md
└─ package.json
这里 logo 我是用了 svg 图标,此时页面效果为
添加社交链接
这里可加可不加,一般会把工程的 Github 链接带上
1、在 .vitepress/config.ts
下加上配置 socialLinks
import {defineConfig} from 'vitepress'
export default defineConfig({
title: '正心全栈编程',
themeConfig: {
logo: "logo.svg", // 站点 logo
siteTitle: "正心全栈编程", // 站点首页标题
socialLinks: [
{icon: "github", link: "https://gitee.com/zhengxinonly"},
{icon: "twitter", link: "..."},
], // 右上角社交链接
}
})
可以看到右上角会出现一个 github 图标,点击就能进入预设的链接
官网介绍有以下这些模式可以使用
interface SocialLink {
icon: SocialLinkIcon
link: string
}
type SocialLinkIcon =
| 'discord'
| 'facebook'
| 'github'
| 'instagram'
| 'linkedin'
| 'slack'
| 'twitter'
| 'youtube'
| { svg: string }
添加 Features
官网下边可以加点 Features 来分点介绍
1、修改根目录下的 index.md
,也就是作为首页的文件
layout: home
hero:
name: VitePress
text: Vite & Vue powered static site generator.
tagline: Lorem ipsum...
image:
src: /logo.svg
alt: VitePress
actions:
- theme: brand
text: Get Started
link: /guide/what-is-vitepress
- theme: alt
text: View on GitHub
link: https://github.com/vuejs/vitepress
features:
- icon: ⚡️
title: Vite, The DX that can't be beat
details: Lorem ipsum...
- icon: 🖖
title: Power of Vue meets Markdown
details: Lorem ipsum...
- icon: 🛠️
title: Simple and minimal, always
details: Lorem ipsum...
这样首页就能显得没那么空,也能加上小点为系统做更详细的描述
页脚
注脚功能比较好实现,vitepress文档 也有教程,就是在 themeConfig
中添加footer
属性
export default {
title: 'zhengxin',// 站点标题
description: '正心的全栈编程笔记', // mate 标签 description,多用于搜索引擎抓取摘要
themeConfig: { // 主题配置
// siteTitle: "正心全栈编程", // 站点首页标题
logo: "logo.svg", // 站点 logo
socialLinks: [
{icon: "github", link: "https://gitee.com/zhengxinonly"},
{icon: "twitter", link: "..."},
], // 右上角社交链接
footer: {
message: '只教有用的',
copyright: '2023.02.06 @zhengxinonly',
}
},
}