Vitepress Basic
Table of Contents 目录
[[toc]]Code Block 代码块
可全局开启:
ts// .vtepress/config.ts export default defineConfig({ markdown: { // 所有 code block 均显示行号 lineNumbers: true } });局部开启:
md```js :line-numbers console.log('Hello world!'); ```jsconsole.log('Hello world!');起始编号
0(默认为1):md```js :line-numbers=0 console.log('Hello world!'); ```jsconsole.log('Hello world!');```js{4} export default { data () { return { msg: 'Highlighted!' } } } ```jsexport default { data () { return { msg: 'Highlighted!' } } }在代码同一行使用单行注释
// [!code --]或// [!code ++]表示代码的增减```js export default { data () { return { msg: 'Removed' // [!!code --] msg: 'Added' // [!!code ++] } } } ```jsexport default { data () { return { msg: 'Removed' msg: 'Added' } } }- md
<<< @/filepath
TIP
Vitepress 会自动由文件扩展名设置相应高亮语言, 如不合适或有自定义需求:
<<< @/filepath{js}- md
::: code-group ```bash [pnpm] pnpm add @unocss/reset ``` ```bash [yarn] yarn add @unocss/reset ``` ```bash [npm] npm install @unocss/reset ``` :::bashpnpm add @unocss/resetbashyarn add @unocss/resetbashnpm install @unocss/reset ```js export default { data () { return { msg: 'Focused!' // [!!code focus] } } } ```jsexport default { data() { return { msg: 'Focused!' }; } };twoslash得益于 @shikijs/vitepress-twoslash, 在代码块中加入
twoslash即可实现类IDE的内联类型提示, 支持ts和Vue代码块:md```vue twoslash <script setup lang="ts"> import {ref} from 'vue'; const message = ref('Hello world!'); </script> ```vue<script setup lang="ts"> import {ref} from 'vue'; constmessage=ref('Hello world!'); </script>
Callout
支持以下类别:
infotipwarningdangerdetails
::: 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.
:::
::: details Click me to view the code
```js
console.log('Hello, VitePress!');
```
:::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.
Click me to view the code
console.log('Hello, VitePress!');Layout
Layout 默认值为 doc, 可选值为:
docpagehome
可在 md 文件的 frontmatter 中配置, 如配置 layout: false 则不使用任何布局。
使用自定义布局:
---
layout: foo
---Frontmatter
title标题, 会出现在head title标签中, 等同于TDK中的TTIP
TDK为Title、Description和Keywords三个单词首字母合写, 为SEO常用术语description描述, 等同于TDK中的Dkeyword关键词, 等同于TDK中的Ktag/tags标签layout布局, 默认值为doc, 可选值docpagehomecustom自定义布局
sidebar是否显示侧边栏sidebar
在 vue 模板中使用:
<template>
<div>{{ $frontmatter }}</div>
</template>在 vue 脚本中使用:
<script setup lang="ts">
import {useData} from 'vitepress';
// frontmatter 为响应式数据 (Ref)
const {frontmatter} = useData();
</script>在 md 中使用:
{{$frontmatter}}注入 frontmatter:
// .vitepress/config.ts
export default defineConfig({
// ...
transformPageData(pageData) {
// 须注入 frontmatter 的键值对
const inject = {
breadcrumb: true,
pageInfo: true,
heatmap: true,
copyright: true
};
Object.keys(inject).forEach(key => {
// 如 md frontmatter 中未配置该属性, 则使用默认值
!(key in pageData.frontmatter) && (pageData.frontmatter[key] = inject[key as keyof typeof inject]);
});
}
});withBase
<script setup lang="ts">
import {withBase} from 'vitepress';
</script>
<template>
<!-- 指向根路由 -->
<a :href="withBase('/')">Home</a>
</template>*.data.js 或 *.data.ts
example.data.js:
import fs from 'fs';
import grayMatter from 'gray-matter';
export default {
// ! 无法 watch md frontmatter 内容变动, 须重启方生效
watch: ['docs/**/*.md'],
load(files) {
const json = files.map(file => {
const content = fs.readFileSync(file, 'utf-8');
const {data} = grayMatter(content);
return data;
});
return json;
}
};使用:
<script setup lang="ts">
import {data as exampleData} from './example.data.js';
</script>
<template>
<div>{{ exampleData }}</div>
</template>TIP
Vitepress 在运行时会运行 *.data.js 中的 load 函数, 并使用命名导出了 data 变量
为避免变量名冲突, 建议引入时使用 as 别名:
import {data as exampleData} from './example.data.js';Emoji
常用的 emoji:
:white_check_mark:
:x:
:copyright:
:registered:
:construction:✅
❌
©️
®️
🚧脚注
这是一个脚注[1]
数学公式
When
列表彩虹大纲线
- one
- two
- three
- four
- five
- six
- seven
- eight
- nine
- ten
- 10
- 9
- nine
- 8
- eight
- 7
- seven
- 6
- six
- 5
- five
- 4
- four
- 3
- three
- 2
- two
- 1

- 1
- 1.1
- 1.2
- 1.2.1
- 1.2.2
- 1.2.2.1
- 1.2.2.2 -1.2.3
- 1.3
- 2
- 2.1
- 2.2
- 2.2.1
- 2.2.2
- 3
Contributors
Changelog
这是一个脚注 ↩︎