Skip to content

VitePress

安装

shell
$ pnpm add -D vitepress

表格

md
```
| 左对齐        |      居中对齐      |  右对齐 |
| ------------- | :-----------: | ----: |
| col 3 is      | right-aligned | $1600 |
| col 2 is      |   centered    |   $12 |
| zebra stripes |   are neat    |    $1 |
```

表情

输入:

:tada: :100:

输出:

🎉 💯

可以在这里查看所有的表情

生成目录

在 md 文件中输入下面的代码即可生成带有层级的标题目录。

[[toc]]

可以在配置文件中设置 markdown.toc,以控制显示目录的层级。

自定义容器

::: 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.
:::

你还可以自定义标题:

::: danger STOP
Danger zone, do not proceed
:::

在代码块中的语法高亮

VitePress 使用 Shiki 将 Markdown 和 代码块中的语法文本变得高亮和多彩。Shiki 支持广泛的编程语言,你只需要在三反引号后面写上正确的编程别名。

你可以在这个列表里查看所有有效的编程别名。

```js
  export default {
    name: 'MyComponent',
    // ...
  }
```

高亮代码块中的若干行

在编程别名后面写一个花括号,再在里面写上高亮的行数。

```js{4} // [!code hl]
export default {
  data () {
    return {
      msg: 'Highlighted!'
    }
  }
}
```

花括号里面也可以是其它值:

  • 行范围:比如 {5-8},{3-10}, {10-17}
  • 多个单行:比如 {4,7,9}
  • 行范围和单行:比如 {4,7-13,16,23-27,40}

还有种办法,你可以直接在代码的一行最后面加上 // [!code hl] 注释。

输入:

```js
export default {
  data () {
    return {
      msg: 'Highlighted!' // [!code  hl]
    }
  }
}
```

聚焦代码块中的若干行

在一行代码的最后面添加注释 // [!code focus],会聚焦这行代码并且模糊其它的部分代码。

如果需要聚焦多行请使用 // [!code focus:<lines>],多了 :<lines>

```js
export default {
  data () {
    return {
      msg: 'Focused!' // [!code  focus]
    }
  }
}
```

其它代码块的高亮注释

// [!code --]// [!code ++] 用于对比。

```js
export default {
  data () {
    return {
      msg: 'Removed' // [!code  --]
      msg: 'Added' // [!code  ++]
    }
  }
}
```

// [!code warning]// [!code error] 用于提示错误或警告。

```js
export default {
  data () {
    return {
      msg: 'Error', // [!code  error]
      msg: 'Warning' // [!code  warning]
    }
  }
}
```

显示代码块行数

js
export default {
  markdown: {
    lineNumbers: true
  }
}

还可以使用 :line-numbers / :no-line-numbers 来设置代码块是否显示行数,这种办法优先级最高。

```ts {1}
// line-numbers is disabled by default
const line2 = 'This is line 2'
const line3 = 'This is line 3'
```

```ts:line-numbers {1}
// line-numbers is enabled
const line2 = 'This is line 2'
const line3 = 'This is line 3'
```

将某个文件的内容显示为代码块

你可以像下面这样将某个文件的内容显示为代码块。

在这里 @ 的值相当于项目的源码目录的根路径。

md
<<< @/filepath

<<< ./filepath

如果需要设置行高亮:

md
<<< @/filepath{highlightLines}

<<< ./filepath{highlightLines}

如果你只想显示文件中内容的某一具体部分,可以使用 VS Code region 语法来达到目的。

首先文件内容的某一具体部分用 region 语法包裹起来。

代码文件:

js
// #region myFn
function foo() {

}
// #endregion myFn

export default foo

然后在 .md 文件里导入的时候在路径后面拼接井号 # 和自定义的 region 名。

md
<<< @/snippets/snippet-with-region.js#snippet{1}

另外,支持你明确的指定文件内容编程语言:

md
<<< @/snippets/snippet.cs{c#}

<!-- 带有高亮:-->
<<< @/snippets/snippet.cs{1,2,4-6 c#}

<!-- 显示行号:-->
<<< @/snippets/snippet.cs{1,2,4-6 c#:line-numbers}

代码分组

你可以像这样将不同的多个代码块分为不同的组:

::: code-group
```js [config.js]
const config = {

}
export default config
```

```ts [config.ts]
import type { UserConfig } from 'vitepress'
const config: UserConfig = {

}
export default config
```
:::

包含 Markdown 文件

你可以使用 <!--@include: ./xxx.md--> 语法使一个 markdown 文件中包含另一个 markdown 文件:

md
# Docs

## Basics

<!--@include: ./parts/basics.md-->

使用原封不动的静态资源

你可能需要使用原封不动的静态资源,比如这些文件 robot.txt,favicons,PWA icons。

你可以把这些文件放在源码目录的 public 目录下面。

比如,如果你的项目根目录是 ./docs 并且使用默认的资源目录位置,那么你的 public 目录将是 ./docs/public。

被放置到 public 的资源将会被复制到输出目录的根目录。

使用绝对根路径来引用放置在 public 目录里的文件。比如,在源代码中总是以 /icon.png 的形式来引入 public/icon.png 资源。

基础 URL

如果你的站点被部署到一个非根路由,你将需要在 .vitepress/config.js 中设置 base 选项。

比如,你计划部署你的站点到 https://foo.github.io/bar/,那么 base 应该设置为 '/bar/'(它的开头和结尾应该都是斜杠)。

所有你的静态资源路由将被自动处理以适应不同的 base 配置值。比如,你的 markdown 引用了在 public 目录下的资源,但是你不需要画蛇添足的加上 /base/

md
![An image](/image-inside-public.png)

但如果你要动态引入资源,可以使用 VitePress 提供的 withBase 辅助器。

vue
<script setup>
import { withBase, useData } from 'vitepress'

const { theme } = useData()
</script>

<template>
  <img :src="withBase(theme.logoPath)" />
</template>

Released under the MIT License.