Skip to content

VitePress

01. 安装&运行

1.1 初始化项目

$ npx vitepress init
$ pnpm vitepress init
$ bunx vitepress init

1.2 运行

$ npm run docs:dev
$ pnpm run docs:dev
$ yarn docs:dev
$ bunx run docs:dev

1.3 打包

$ npm run docs:build

输出目录docs/.vitepress/dist

02. Markdown 语法

参考官网

标题锚点

自定义锚点

md
# 使用自定义锚点 {#my-anchor}

链接

内部链接

外部链接

frontmatter

参见frontmatter

GitHub 风格的表格

输入

md
| Tables        |      Are      |  Cool |
| ------------- | :-----------: | ----: |
| col 3 is      | right-aligned | $1600 |
| col 2 is      |   centered    |   $12 |
| zebra stripes |   are neat    |    $1 |

输出

TablesAreCool
col 3 isright-aligned$1600
col 2 iscentered$12
zebra stripesare neat$1

Emoji 🎉

输入

md
:tada: :100:

输出

🎉 💯

这里可以找到所有支持的 emoji 列表

目录表(TOC)

输入

[[toc]]

输出

自定义容器

默认标题

输入

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

输出

信息

This is an info box.

提示

This is a tip.

警告

This is a warning.

危险

This is a dangerous warning.

详细信息

This is a details block.

自定义标题

输入

md
::: danger STOP
危险区域,请勿继续
:::

::: details 点我查看代码

```js
console.log("Hello, VitePress!");
```

:::

输出

STOP

危险区域,请勿继续

点我查看代码
js
console.log("Hello, VitePress!");

代码块中的语法高亮

输入

md
```js
export default {
  name: "MyComponent",
  // ...
};
```
md
```html
<ul>
  <li v-for="todo in todos" :key="todo.id">{{ todo.text }}</li>
</ul>
```

输出

js
export default {
  name: "MyComponent",
  // ...
};
vue
<ul>
  <li v-for="todo in todos" :key="todo.id">
    {{ todo.text }}
  </li>
</ul>

在 Shikiji 的代码仓库中,可以找到合法的编程语言列表

在代码块中实现行高亮

单行高亮

输入

md
```js{4}
export default {
  data () {
    return {
      msg: 'Highlighted!'
    }
  }
}
```

输出

js
export default {
  data () {
    return {
      msg: 'Highlighted!'
    }
  }
}

多行高亮

除了单行之外,还可以指定多个单行、多行,或两者均指定:

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

输入

md
```js{1,4,6-8}
export default { // Highlighted
  data () {
    return {
      msg: `Highlighted!
      This line isn't highlighted,
      but this and the next 2 are.`,
      motd: 'VitePress is awesome',
      lorem: 'ipsum'
    }
  }
}
```

输出

js
export default { // Highlighted
  data () {
    return {
      msg: `Highlighted!
      This line isn't highlighted,
      but this and the next 2 are.`,
      motd: 'VitePress is awesome',
      lorem: 'ipsum'
    }
  }
}

注释高亮

使用 // [!code hl] 注释实现行高亮。

输入

md
```js
export default {
  data() {
    return {
      msg: "Highlighted!", // [!code  hl]
    };
  },
};
```

输出

js
export default {
  data() {
    return {
      msg: "Highlighted!", 
    };
  },
};

代码块中聚焦

输入

md
```js
export default {
  data() {
    return {
      msg: "Focused!", // [!code  focus]
    };
  },
};
```

输出

js
export default {
  data() {
    return {
      msg: "Focused!", 
    };
  },
};

代码块中的颜色差异

输入

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

输出

js
export default {
  data () {
    return {
      msg: 'Removed'
      msg: 'Added'
    }
  }
}

高亮“错误”和“警告”

输入

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

输出

js
export default {
  data() {
    return {
      msg: "Error", 
      msg: "Warning", 
    };
  },
};

行号

可以通过以下配置为每个代码块启用行号:

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

输入

md
```ts {1}
// 默认禁用行号
const line2 = "This is line 2";
const line3 = "This is line 3";
```

```ts:line-numbers {1}
// 启用行号
const line2 = 'This is line 2'
const line3 = 'This is line 3'
```

```ts:line-numbers=2 {1}
// 行号已启用,并从 2 开始
const line3 = 'This is line 3'
const line4 = 'This is line 4'
```

输出

ts
// 默认禁用行号
const line2 = "This is line 2";
const line3 = "This is line 3";
ts
// 启用行号
const line2 = 'This is line 2'
const line3 = 'This is line 3'
ts
// 行号已启用,并从 2 开始
const line3 = 'This is line 3'
const line4 = 'This is line 4'

导入代码片段

输入

md
<<< ./snippet-with-region.js#snippet {1,2,4-6 js:line-numbers}

输出

js
let a = 1;
let b = 2;

function test() {
  return a + b;
}

./snippet-with-region.js

js
let other = 888;

// #region snippet
let a = 1;
let b = 2;

function test() {
  return a + b;
}
// #endregion snippet

let another = 999;

代码组

输入

md
::: code-group

```js [config.js]
/**
 * @type {import('vitepress').UserConfig}
 */
const config = {
  // ...
};

export default config;
```

```ts [config.ts]
import type { UserConfig } from "vitepress";

const config: UserConfig = {
  // ...
};

export default config;
```

:::

输出

js
/**
 * @type {import('vitepress').UserConfig}
 */
const config = {
  // ...
};

export default config;
ts
import type { UserConfig } from "vitepress";

const config: UserConfig = {
  // ...
};

export default config;

在代码组中导入代码片段

输入

md
::: code-group

<!-- 文件名默认用作标题 -->

<<< ./snippet-with-region.js [snippet]

<!-- 也可以提供定制的代码组 -->

<<< ./snippet-with-region.js#snippet {1,2,4-6 js:line-numbers} [snippet with region]

:::

输出

js
let other = 888;

// #region snippet
let a = 1;
let b = 2;

function test() {
  return a + b;
}
// #endregion snippet

let another = 999;
js
let a = 1;
let b = 2;

function test() {
  return a + b;
}

包含 markdown 文件

提示

所选行范围的格式可以是: {3,}{,10}{1,10}

输入: <!-- @include: ./vitePress-import.md{3,} -->

./vitePress-import.md 3-结尾 内容:

md
### Sub Menu

> This is a test.

输出:

This is a test.

数学方程

数学方程-参考官网

图片懒加载

js
export default {
  markdown: {
    image: {
      // 默认禁用图片懒加载
      lazyLoading: true,
    },
  },
};

在 Markdown 中使用 Vue

2
123
The count is: 0

{
  "title": "Markdown 扩展",
  "titleTemplate": "模版",
  "description": "描述",
  "frontmatter": {
    "title": "Markdown 扩展",
    "titleTemplate": "模版",
    "description": "描述",
    "layout": "doc",
    "navbar": true,
    "sidebar": true,
    "aside": "right",
    "outline": [
      2,
      3
    ],
    "editLink": true,
    "footer": true,
    "pageClass": "custom-page-class-123"
  },
  "headers": [],
  "relativePath": "views/note/vitePress.md",
  "filePath": "views/note/vitePress.md",
  "lastUpdated": 1706593644000
}