@ruan-cat/vitepress-preset-config 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config.mjs +10 -1
- package/package.json +2 -1
- package/src/bug-to-fix/code-line-number-bug/code/001/index.ts +9 -0
- package/src/bug-to-fix/code-line-number-bug/code/001/raw-code-twoslash.txt +17 -0
- package/src/bug-to-fix/code-line-number-bug/code/001/raw-code.txt +11 -0
- package/src/bug-to-fix/code-line-number-bug/code/002/index.ts +56 -0
- package/src/bug-to-fix/code-line-number-bug/code/002/raw-code-twoslash.txt +89 -0
- package/src/bug-to-fix/code-line-number-bug/code/002/raw-code.txt +70 -0
- package/src/bug-to-fix/code-line-number-bug/try-to-fix-lineNumberPlugin.ts +49 -0
- package/src/config.mts +11 -0
package/dist/config.mjs
CHANGED
|
@@ -13,6 +13,11 @@ import { defineTeekConfig } from "vitepress-theme-teek/config";
|
|
|
13
13
|
var teekConfig = defineTeekConfig({
|
|
14
14
|
/** @see https://vp.teek.top/reference/config/global-config.html#sidebartrigger */
|
|
15
15
|
sidebarTrigger: true,
|
|
16
|
+
/**
|
|
17
|
+
* 关闭 Teek 主题的首页风格
|
|
18
|
+
* @see https://vp.teek.top/reference/config/global-config.html#teekhome
|
|
19
|
+
*/
|
|
20
|
+
teekHome: false,
|
|
16
21
|
vitePlugins: {
|
|
17
22
|
/**
|
|
18
23
|
* 关闭 vitepress-plugin-permalink 插件
|
|
@@ -104,7 +109,8 @@ var defaultUserConfig = {
|
|
|
104
109
|
},
|
|
105
110
|
vite: {
|
|
106
111
|
server: {
|
|
107
|
-
open: true
|
|
112
|
+
open: true,
|
|
113
|
+
port: 8080
|
|
108
114
|
},
|
|
109
115
|
plugins: [
|
|
110
116
|
/** @see https://github.com/okineadev/vitepress-plugin-llms */
|
|
@@ -139,6 +145,9 @@ var defaultUserConfig = {
|
|
|
139
145
|
transformerTwoslash()
|
|
140
146
|
],
|
|
141
147
|
// languages: ["js", "jsx", "ts", "tsx"],
|
|
148
|
+
/**
|
|
149
|
+
* FIXME: 在开启 twoslash 后 ,行号显示是不正确的。 这个故障是vitepress的bug,暂时没有好的方案来解决。
|
|
150
|
+
*/
|
|
142
151
|
lineNumbers: true,
|
|
143
152
|
container: {
|
|
144
153
|
tipLabel: "\u63D0\u793A",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ruan-cat/vitepress-preset-config",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "用于给大多数的vitepress项目提供一个预设的配置文件。",
|
|
5
5
|
"homepage": "https://vitepress-preset.ruancat6312.top",
|
|
6
6
|
"types": "./src/config.mts",
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
"consola": "^3.4.2",
|
|
12
12
|
"js-yaml": "^4.1.0",
|
|
13
13
|
"lodash-es": "^4.17.21",
|
|
14
|
+
"markdown-it-async": "^2.2.0",
|
|
14
15
|
"mermaid": "^11.10.0",
|
|
15
16
|
"vitepress-demo-plugin": "^1.4.7",
|
|
16
17
|
"vitepress-plugin-llms": "^1.7.3",
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code twoslash lsp" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"> type</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>TestType</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">type</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> TestType</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> {</span></span>
|
|
2
|
+
<span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70"> name</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> string</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">;</span></span>
|
|
3
|
+
<span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70"> age</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> number</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">;</span></span>
|
|
4
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">}</span></span></code></pre></code></span></template></v-menu></span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> {</span></span>
|
|
5
|
+
<span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70"> </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>name</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">: string</span></code></span></template></v-menu></span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> string</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">;</span></span>
|
|
6
|
+
<span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70"> </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>age</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">age</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">: number</span></code></span></template></v-menu></span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> number</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">;</span></span>
|
|
7
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">};</span></span>
|
|
8
|
+
<span class="line"></span>
|
|
9
|
+
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"> const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>testType</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> testType</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> TestType</span></code></span></template></v-menu></span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>TestType</span><template
|
|
10
|
+
v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">type</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> TestType</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> {</span></span>
|
|
11
|
+
<span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70"> name</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> string</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">;</span></span>
|
|
12
|
+
<span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70"> age</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> number</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">;</span></span>
|
|
13
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">}</span></span></code></pre></code></span></template></v-menu></span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> {</span></span>
|
|
14
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>name</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">name</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">: string</span></code></span></template></v-menu></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">"test"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">,</span></span>
|
|
15
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>age</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">age</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">: number</span></code></span></template></v-menu></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF">18</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">,</span></span>
|
|
16
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">};</span></span></code></pre>
|
|
17
|
+
</div>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e" tabindex="0" v-pre=""><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"> type</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> TestType</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> {</span></span>
|
|
2
|
+
<span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70"> name</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> string</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">;</span></span>
|
|
3
|
+
<span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70"> age</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> number</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">;</span></span>
|
|
4
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">};</span></span>
|
|
5
|
+
<span class="line"></span>
|
|
6
|
+
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"> const</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> testType</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> TestType</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> {</span></span>
|
|
7
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> name:
|
|
8
|
+
</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">"test"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">,</span></span>
|
|
9
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> age: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF">18</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">,</span></span>
|
|
10
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">};</span></span></code></pre>
|
|
11
|
+
</div>
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { defineConfig } from "vitepress";
|
|
2
|
+
|
|
3
|
+
// https://vitepress.dev/reference/site-config
|
|
4
|
+
|
|
5
|
+
import { transformerTwoslash } from "@shikijs/vitepress-twoslash";
|
|
6
|
+
|
|
7
|
+
// @ts-ignore
|
|
8
|
+
import { lineNumberPlugin } from "./temp-plugins/temp-lineNumberPlugin";
|
|
9
|
+
|
|
10
|
+
export default defineConfig({
|
|
11
|
+
title: "My Awesome Project",
|
|
12
|
+
description: "A VitePress Site",
|
|
13
|
+
themeConfig: {
|
|
14
|
+
// https://vitepress.dev/reference/default-theme-config
|
|
15
|
+
nav: [
|
|
16
|
+
{ text: "Home", link: "/" },
|
|
17
|
+
{ text: "Examples", link: "/markdown-examples" },
|
|
18
|
+
],
|
|
19
|
+
|
|
20
|
+
sidebar: [
|
|
21
|
+
{
|
|
22
|
+
text: "Examples",
|
|
23
|
+
items: [
|
|
24
|
+
{ text: "Markdown Examples", link: "/markdown-examples" },
|
|
25
|
+
{ text: "Runtime API Examples", link: "/api-examples" },
|
|
26
|
+
],
|
|
27
|
+
},
|
|
28
|
+
],
|
|
29
|
+
|
|
30
|
+
socialLinks: [
|
|
31
|
+
{ icon: "github", link: "https://github.com/vuejs/vitepress" },
|
|
32
|
+
],
|
|
33
|
+
},
|
|
34
|
+
|
|
35
|
+
vite: {
|
|
36
|
+
server: {
|
|
37
|
+
open: true,
|
|
38
|
+
port: 8080,
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
|
|
42
|
+
markdown: {
|
|
43
|
+
codeTransformers: [
|
|
44
|
+
// @ts-ignore
|
|
45
|
+
transformerTwoslash(),
|
|
46
|
+
],
|
|
47
|
+
|
|
48
|
+
config(md) {
|
|
49
|
+
// @ts-ignore
|
|
50
|
+
md.use(lineNumberPlugin, true);
|
|
51
|
+
},
|
|
52
|
+
|
|
53
|
+
// Explicitly load these languages for types hightlighting
|
|
54
|
+
// languages: ["js", "jsx", "ts", "tsx"] as LanguageInput[],
|
|
55
|
+
},
|
|
56
|
+
});
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
<div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code twoslash lsp" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> { </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>defineConfig</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">function</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> defineConfig</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">(</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70">config</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> UserConfig</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"><</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">DefaultTheme</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">Config</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">>)</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> UserConfig</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"><</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">DefaultTheme</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">Config</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">></span></code><div class="twoslash-popup-docs vp-doc"><p>Type config helper</p></div></span></template></v-menu></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">
|
|
2
|
+
"vitepress"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">;</span></span>
|
|
3
|
+
<span class="line"></span>
|
|
4
|
+
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D">// https://vitepress.dev/reference/site-config</span></span>
|
|
5
|
+
<span class="line"></span>
|
|
6
|
+
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> { </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>transformerTwoslash</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">function</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> transformerTwoslash</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">(</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70">options</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">?:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> VitePressPluginTwoslashOptions</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">)</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> ShikiTransformer</span></code><div class="twoslash-popup-docs vp-doc"><p>Create a Shiki transformer for VitePress to enable twoslash integration</p>
|
|
7
|
+
<p>Add this to <code>markdown.codeTransformers</code> in <code>.vitepress/config.ts</code></p></div></span></template></v-menu></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> "@shikijs/vitepress-twoslash"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">;</span></span>
|
|
8
|
+
<span class="line"></span>
|
|
9
|
+
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D">// @ts-ignore</span></span>
|
|
10
|
+
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> { </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>lineNumberPlugin</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> lineNumberPlugin</span></code></span></template></v-menu></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> "./temp-plugins/temp-lineNumberPlugin"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">;</span></span>
|
|
11
|
+
<span class="line"></span>
|
|
12
|
+
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"> default</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>defineConfig</span><template
|
|
13
|
+
v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">function</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> defineConfig</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">(</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70">config</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> UserConfig</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"><</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">DefaultTheme</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">Config</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">>)</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> UserConfig</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"><</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">DefaultTheme</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">Config</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">></span></code><div class="twoslash-popup-docs vp-doc"><p>Type config helper</p></div></span></template></v-menu></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">({</span></span>
|
|
14
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>title</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">LocaleSpecificConfig</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"><</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">DefaultTheme.Config</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">.title</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">?:</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> string </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">|</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> undefined</span></code></span></template></v-menu></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">"My Awesome Project"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">,</span></span>
|
|
15
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>description</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">LocaleSpecificConfig</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"><</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">DefaultTheme.Config</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">.description</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">?:</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> string </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">|</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> undefined</span></code></span></template></v-menu></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">"A VitePress Site"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">,</span></span>
|
|
16
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>themeConfig</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">LocaleSpecificConfig</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"><</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">DefaultTheme.Config</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">.themeConfig</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">?:</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> DefaultTheme.Config </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">|</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> undefined</span></code></span></template></v-menu></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">: {</span></span>
|
|
17
|
+
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D"> // https://vitepress.dev/reference/default-theme-config</span></span>
|
|
18
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>nav</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">DefaultTheme.Config.nav</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">?:</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> DefaultTheme.NavItem[] </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">|</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> undefined</span></code><div class="twoslash-popup-docs vp-doc"><p>The nav items.</p></div></span></template></v-menu></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">: [</span></span>
|
|
19
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> { </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>text</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">text</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">: string</span></code></span></template></v-menu></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">"Home"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">, </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>link</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">DefaultTheme.NavItemWithLink.link: string</span></code></span></template></v-menu></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">"/"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> },</span></span>
|
|
20
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> { </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>text</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">text</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">: string</span></code></span></template></v-menu></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">"Examples"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">, </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>link</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">DefaultTheme.NavItemWithLink.link: string</span></code></span></template></v-menu></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">"/markdown-examples"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> },</span></span>
|
|
21
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> ],</span></span>
|
|
22
|
+
<span class="line"></span>
|
|
23
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>sidebar</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">DefaultTheme.Config.sidebar</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">?:</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> DefaultTheme.Sidebar </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">|</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> undefined</span></code><div class="twoslash-popup-docs vp-doc"><p>The sidebar items.</p></div></span></template></v-menu></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">: [</span></span>
|
|
24
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> {</span></span>
|
|
25
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">
|
|
26
|
+
</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>text</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">text</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">?:</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> string </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">|</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> undefined</span></code><div class="twoslash-popup-docs vp-doc"><p>The text label of the item.</p></div></span></template></v-menu></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">"Examples"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">,</span></span>
|
|
27
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">
|
|
28
|
+
</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>items</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">items</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">: {</span></span>
|
|
29
|
+
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> text</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">: string;</span></span>
|
|
30
|
+
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> link</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">: string;</span></span>
|
|
31
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">}[]</span></span></code></pre></code></span></template></v-menu></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">: [</span></span>
|
|
32
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">
|
|
33
|
+
{ </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>text</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">text</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">?:</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> string </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">|</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> undefined</span></code><div class="twoslash-popup-docs vp-doc"><p>The text label of the item.</p></div></span></template></v-menu></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">"Markdown Examples"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">, </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"><v-menu class="twoslash-hover"
|
|
34
|
+
popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>link</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">link</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">?:</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> string </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">|</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> undefined</span></code><div class="twoslash-popup-docs vp-doc"><p>The link of the item.</p></div></span></template></v-menu></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">"/markdown-examples"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> },</span></span>
|
|
35
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">
|
|
36
|
+
{ </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>text</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">text</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">?:</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> string </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">|</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> undefined</span></code><div class="twoslash-popup-docs vp-doc"><p>The text label of the item.</p></div></span></template></v-menu></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">"Runtime API Examples"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">, </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>link</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">link</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">?:</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> string </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">|</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> undefined</span></code><div class="twoslash-popup-docs vp-doc"><p>The link of the item.</p></div></span></template></v-menu></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">"/api-examples"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> },</span></span>
|
|
37
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">
|
|
38
|
+
],</span></span>
|
|
39
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> },</span></span>
|
|
40
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> ],</span></span>
|
|
41
|
+
<span class="line"></span>
|
|
42
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>socialLinks</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">DefaultTheme.Config.socialLinks</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">?:</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> DefaultTheme.SocialLink[] </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">|</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> undefined</span></code><div class="twoslash-popup-docs vp-doc"><p>The social links to be displayed at the end of the nav bar. Perfect for
|
|
43
|
+
placing links to social services such as GitHub, Twitter, Facebook, etc.</p></div></span></template></v-menu></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">: [</span></span>
|
|
44
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> { </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>icon</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">DefaultTheme.SocialLink.icon: DefaultTheme.SocialLinkIcon</span></code></span></template></v-menu></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">"github"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">, </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>link</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">DefaultTheme.SocialLink.link: string</span></code></span></template></v-menu></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">"https://github.com/vuejs/vitepress"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> },</span></span>
|
|
45
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> ],</span></span>
|
|
46
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> },</span></span>
|
|
47
|
+
<span class="line"></span>
|
|
48
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>vite</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e" tabindex="0"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">UserConfig</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"><</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">DefaultTheme.Config</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">.vite</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">?:</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> (UserConfig </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">&</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> {</span></span>
|
|
49
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> configFile?: string </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">|</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> false</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">;</span></span>
|
|
50
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">}) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">|</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> undefined</span></span></code></pre></code><div class="twoslash-popup-docs vp-doc"><p>Vite config</p></div></span></template></v-menu></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">: {</span></span>
|
|
51
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>server</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">UserConfig.server</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">?:</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> ServerOptions </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">|</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> undefined</span></code><div class="twoslash-popup-docs vp-doc"><p>Server specific options, e.g. host, port, https...</p></div></span></template></v-menu></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">: {</span></span>
|
|
52
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>open</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">CommonServerOptions.open</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">?:</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> string </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">|</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> boolean </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">|</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> undefined</span></code><div class="twoslash-popup-docs vp-doc"><p>Open browser window on startup</p></div></span></template></v-menu></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF">true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">,</span></span>
|
|
53
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>port</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">CommonServerOptions.port</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">?:</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> number </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">|</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> undefined</span></code><div class="twoslash-popup-docs vp-doc"><p>Specify server port. Note if
|
|
54
|
+
the port is already being used, Vite will
|
|
55
|
+
automatically try the next available port so this may not be the actual
|
|
56
|
+
port the server ends up listening on.</p></div></span></template></v-menu></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF">8080</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">,</span></span>
|
|
57
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> },</span></span>
|
|
58
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> },</span></span>
|
|
59
|
+
<span class="line"></span>
|
|
60
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>markdown</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">UserConfig</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"><</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">DefaultTheme.Config</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">.markdown</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">?:</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> MarkdownOptions </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">|</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> undefined</span></code><div class="twoslash-popup-docs vp-doc"><p>MarkdownIt options</p></div></span></template></v-menu></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">: {</span></span>
|
|
61
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>codeTransformers</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">MarkdownOptions.codeTransformers</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">?:</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> ShikiTransformer[] </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">|</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> undefined</span></code><div class="twoslash-popup-docs vp-doc"><p>Transformers applied to code blocks</p></div><div class="twoslash-popup-docs twoslash-popup-docs-tags vp-doc"><span class="twoslash-popup-docs-tag"><span class="twoslash-popup-docs-tag-name">@see</span><span class="twoslash-popup-docs-tag-value"><a href="https://shiki.style/guide/transformers">https://shiki.style/guide/transformers</a></span></span></div></span></template></v-menu></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">: [</span></span>
|
|
62
|
+
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D"> // @ts-ignore</span></span>
|
|
63
|
+
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>transformerTwoslash</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">function</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> transformerTwoslash</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">(</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70">options</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">?:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> VitePressPluginTwoslashOptions</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">)</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> ShikiTransformer</span></code><div class="twoslash-popup-docs vp-doc"><p>Create a Shiki transformer for VitePress to enable
|
|
64
|
+
twoslash integration</p>
|
|
65
|
+
<p>Add this to <code>markdown.codeTransformers</code> in <code>.vitepress/config.ts</code></p></div></span></template></v-menu></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">(),</span></span>
|
|
66
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> ],</span></span>
|
|
67
|
+
<span class="line"></span>
|
|
68
|
+
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>config</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">MarkdownOptions.config</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">?:</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> ((</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70">md</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> MarkdownIt</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">=></span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"> void</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">|</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> undefined</span></code><div class="twoslash-popup-docs vp-doc"><p>Setup markdown-it instance</p></div></span></template></v-menu></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">(</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>md</span><template
|
|
69
|
+
v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">md</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">: MarkdownIt</span></code></span></template></v-menu></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">) {</span></span>
|
|
70
|
+
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D"> // @ts-ignore</span></span>
|
|
71
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> </span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>md</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">md</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">: MarkdownIt</span></code></span></template></v-menu></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>use</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">MarkdownIt.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">use</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"><</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF">boolean</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">>(plugin: PluginWithOptions</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"><</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">boolean</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">, options</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">?:</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> boolean </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">|</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF"> undefined</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">): </span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">MarkdownIt</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> (</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">+</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF">2</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> overloads)</span></code><div class="twoslash-popup-docs vp-doc"><p><em>chainable</em></p>
|
|
72
|
+
<p>Load specified plugin with given params into current parser instance.
|
|
73
|
+
It's just a sugar to call <code>plugin(md, params)</code> with curring.</p>
|
|
74
|
+
<h5>Example</h5>
|
|
75
|
+
<code><pre class="shiki shiki-themes github-light github-dark" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">var</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> iterator </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">=</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> require</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">'markdown-it-for-inline'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">);</span></span>
|
|
76
|
+
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">var</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> md </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">=</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> require</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">'markdown-it'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">)()</span></span>
|
|
77
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">
|
|
78
|
+
.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">use</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">(iterator, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">'foo_replace'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">'text'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">, </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">function</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> (</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70">tokens</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">, </span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70">idx</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">) {</span></span>
|
|
79
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">
|
|
80
|
+
tokens[idx].content </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> tokens[idx].content.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">replace</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">(</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">/</span><span style="--shiki-light:#032F62;--shiki-dark:#DBEDFF">foo</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">/</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">g</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">, </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">'bar'</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">);</span></span>
|
|
81
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">
|
|
82
|
+
});</span></span></code></pre></code></div></span></template></v-menu></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">(</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"><v-menu class="twoslash-hover" popper-class="shiki twoslash-floating vp-copy-ignore" theme="twoslash"><span>lineNumberPlugin</span><template v-slot:popper="{}"><span class="twoslash-popup-container vp-copy-ignore" v-pre=""><code class="twoslash-popup-code"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> lineNumberPlugin</span></code></span></template></v-menu></span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF">true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">);</span></span>
|
|
83
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> },</span></span>
|
|
84
|
+
<span class="line"></span>
|
|
85
|
+
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D"> // Explicitly load these languages for types hightlighting</span></span>
|
|
86
|
+
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D"> // languages: ["js", "jsx", "ts", "tsx"] as LanguageInput[],</span></span>
|
|
87
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> },</span></span>
|
|
88
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">});</span></span></code></pre>
|
|
89
|
+
</div>
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
<div class="language-ts vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">ts</span><pre class="shiki shiki-themes github-light github-dark vp-code" style="--shiki-light:#24292e;--shiki-dark:#e1e4e8;--shiki-light-bg:#fff;--shiki-dark-bg:#24292e" tabindex="0" v-pre=""><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> { defineConfig } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> "vitepress"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">;</span></span>
|
|
2
|
+
<span class="line"></span>
|
|
3
|
+
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D">// https://vitepress.dev/reference/site-config</span></span>
|
|
4
|
+
<span class="line"></span>
|
|
5
|
+
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> { transformerTwoslash } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">from</span><span
|
|
6
|
+
style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> "@shikijs/vitepress-twoslash"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">;</span></span>
|
|
7
|
+
<span class="line"></span>
|
|
8
|
+
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D">// @ts-ignore</span></span>
|
|
9
|
+
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> { lineNumberPlugin }
|
|
10
|
+
</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF"> "./temp-plugins/temp-lineNumberPlugin"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">;</span></span>
|
|
11
|
+
<span class="line"></span>
|
|
12
|
+
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583">export</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583"> default</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> defineConfig</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">({</span></span>
|
|
13
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> title: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">"My Awesome Project"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">,</span></span>
|
|
14
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> description: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">"A VitePress
|
|
15
|
+
Site"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">,</span></span><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> themeConfig: {</span></span>
|
|
16
|
+
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D"> // https://vitepress.dev/reference/default-theme-config</span></span>
|
|
17
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> nav: [</span></span>
|
|
18
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> {
|
|
19
|
+
text: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">"Home"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">, link: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">"/"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> },</span></span>
|
|
20
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> {
|
|
21
|
+
text: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">"Examples"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">, link: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">"/markdown-examples"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> },</span></span>
|
|
22
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> ],</span></span>
|
|
23
|
+
<span class="line"></span>
|
|
24
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> sidebar: [</span></span>
|
|
25
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> {</span></span>
|
|
26
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">
|
|
27
|
+
text: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">"Examples"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">,</span></span>
|
|
28
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">
|
|
29
|
+
items: [</span></span>
|
|
30
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">
|
|
31
|
+
{ text: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">"Markdown
|
|
32
|
+
Examples"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">, link: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">"/markdown-examples"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> },</span></span>
|
|
33
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">
|
|
34
|
+
{ text: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">"Runtime API Examples"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">, link:
|
|
35
|
+
</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">"/api-examples"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> },</span></span>
|
|
36
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">
|
|
37
|
+
],</span></span>
|
|
38
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> },</span></span>
|
|
39
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> ],</span></span>
|
|
40
|
+
<span class="line"></span>
|
|
41
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> socialLinks: [</span></span>
|
|
42
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> {
|
|
43
|
+
icon: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">"github"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">, link: </span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF">"https://github.com/vuejs/vitepress"</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> },</span></span>
|
|
44
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> ],</span></span>
|
|
45
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> },</span></span>
|
|
46
|
+
<span class="line"></span>
|
|
47
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> vite:
|
|
48
|
+
{</span></span>
|
|
49
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> server: {</span></span>
|
|
50
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> open: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF">true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">,</span></span>
|
|
51
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> port: </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF">8080</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">,</span></span>
|
|
52
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> },</span></span>
|
|
53
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> },</span></span>
|
|
54
|
+
<span class="line"></span>
|
|
55
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> markdown: {</span></span>
|
|
56
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> codeTransformers: [</span></span>
|
|
57
|
+
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D"> // @ts-ignore</span></span>
|
|
58
|
+
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> transformerTwoslash</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">(),</span></span>
|
|
59
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> ],</span></span>
|
|
60
|
+
<span class="line"></span>
|
|
61
|
+
<span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0"> config</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">(</span><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70">md</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">) {</span></span>
|
|
62
|
+
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D"> // @ts-ignore</span></span>
|
|
63
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> md.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0">use</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">(lineNumberPlugin, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF">true</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">);</span></span>
|
|
64
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> },</span></span>
|
|
65
|
+
<span class="line"></span>
|
|
66
|
+
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D"> // Explicitly load these languages for types hightlighting</span></span>
|
|
67
|
+
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D"> // languages: ["js", "jsx", "ts", "tsx"] as LanguageInput[],</span></span>
|
|
68
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8"> },</span></span>
|
|
69
|
+
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8">});</span></span></code></pre>
|
|
70
|
+
</div>
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// markdown-it plugin for generating line numbers.
|
|
2
|
+
// It depends on preWrapper plugin.
|
|
3
|
+
|
|
4
|
+
import type { MarkdownItAsync } from "markdown-it-async";
|
|
5
|
+
import { consola } from "consola";
|
|
6
|
+
export const lineNumberPlugin = (md: MarkdownItAsync, enable = false) => {
|
|
7
|
+
const fence = md.renderer.rules.fence!;
|
|
8
|
+
md.renderer.rules.fence = (...args) => {
|
|
9
|
+
const rawCode = fence(...args);
|
|
10
|
+
|
|
11
|
+
// consola.log(` 查看 rawCode \n\n`, rawCode);
|
|
12
|
+
// console.log(`\n\n`);
|
|
13
|
+
|
|
14
|
+
const [tokens, idx] = args;
|
|
15
|
+
const info = tokens[idx].info;
|
|
16
|
+
|
|
17
|
+
if ((!enable && !/:line-numbers($| |=)/.test(info)) || (enable && /:no-line-numbers($| )/.test(info))) {
|
|
18
|
+
return rawCode;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
let startLineNumber = 1;
|
|
22
|
+
const matchStartLineNumber = info.match(/=(\d*)/);
|
|
23
|
+
if (matchStartLineNumber && matchStartLineNumber[1]) {
|
|
24
|
+
startLineNumber = parseInt(matchStartLineNumber[1]);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const code = rawCode.slice(rawCode.indexOf("<code>"), rawCode.indexOf("</code>"));
|
|
28
|
+
|
|
29
|
+
// consola.log(` 查看 code \n\n`, code);
|
|
30
|
+
// console.log(`\n\n`);
|
|
31
|
+
|
|
32
|
+
const lines = code.split("\n");
|
|
33
|
+
|
|
34
|
+
// consola.log(` 查看 lines \n\n`, lines);
|
|
35
|
+
// console.log(`\n\n`);
|
|
36
|
+
|
|
37
|
+
const lineNumbersCode = [...Array(lines.length)]
|
|
38
|
+
.map((_, index) => `<span class="line-number">${index + startLineNumber}</span><br>`)
|
|
39
|
+
.join("");
|
|
40
|
+
|
|
41
|
+
const lineNumbersWrapperCode = `<div class="line-numbers-wrapper" aria-hidden="true">${lineNumbersCode}</div>`;
|
|
42
|
+
|
|
43
|
+
const finalCode = rawCode
|
|
44
|
+
.replace(/<\/div>$/, `${lineNumbersWrapperCode}</div>`)
|
|
45
|
+
.replace(/"(language-[^"]*?)"/, '"$1 line-numbers-mode"');
|
|
46
|
+
|
|
47
|
+
return finalCode;
|
|
48
|
+
};
|
|
49
|
+
};
|
package/src/config.mts
CHANGED
|
@@ -35,6 +35,12 @@ const teekConfig = defineTeekConfig({
|
|
|
35
35
|
/** @see https://vp.teek.top/reference/config/global-config.html#sidebartrigger */
|
|
36
36
|
sidebarTrigger: true,
|
|
37
37
|
|
|
38
|
+
/**
|
|
39
|
+
* 关闭 Teek 主题的首页风格
|
|
40
|
+
* @see https://vp.teek.top/reference/config/global-config.html#teekhome
|
|
41
|
+
*/
|
|
42
|
+
teekHome: false,
|
|
43
|
+
|
|
38
44
|
vitePlugins: {
|
|
39
45
|
/**
|
|
40
46
|
* 关闭 vitepress-plugin-permalink 插件
|
|
@@ -158,6 +164,7 @@ const defaultUserConfig: UserConfig<DefaultTheme.Config> = {
|
|
|
158
164
|
vite: {
|
|
159
165
|
server: {
|
|
160
166
|
open: true,
|
|
167
|
+
port: 8080,
|
|
161
168
|
},
|
|
162
169
|
|
|
163
170
|
plugins: [
|
|
@@ -200,7 +207,11 @@ const defaultUserConfig: UserConfig<DefaultTheme.Config> = {
|
|
|
200
207
|
],
|
|
201
208
|
// languages: ["js", "jsx", "ts", "tsx"],
|
|
202
209
|
|
|
210
|
+
/**
|
|
211
|
+
* FIXME: 在开启 twoslash 后 ,行号显示是不正确的。 这个故障是vitepress的bug,暂时没有好的方案来解决。
|
|
212
|
+
*/
|
|
203
213
|
lineNumbers: true,
|
|
214
|
+
|
|
204
215
|
container: {
|
|
205
216
|
tipLabel: "提示",
|
|
206
217
|
warningLabel: "警告",
|