vitepress
配置
配置静态资源
放入public
<image src="/narcissus/vitepress1.png" />
配置页面路由跳转
[快速生成代码片段](/front-end/vue/vue#ref)
使用
表格
| Left | Middle | right |
|---|---|---|
| ------------- | :-----------: | ---------: |
| Left | Middle | right |
emoji
🎉 - :tada:
目录结构
[[toc]]
Card
INFO
This is an info box. [info]
TIP
This is a tip. [tip]
WARNING
This is a warning. [warning]
DANGER
This is a dangerous warning. [danger]
Details
This is a details block. [details]
行高亮
js{4}
// [!code highlight]
js
export default {
data () {
return {
msg: 'Highlighted!'
}
}
}行聚焦
TIP
在某一行上添加 // [!code focus] 注释将聚焦它并模糊代码的其他部分。
此外,可以使用 // [!code focus:<行数>] 定义要聚焦的行数。
js
export default {
data () {
return {
msg: 'Focused!'
}
}
}行Diff
在某一行添加 // [!code --] 或 // [!code ++] 注释将会为该行创建 diff,同时保留代码块的颜色。
js
export default {
data () {
return {
msg: 'Removed'
msg: 'Added'
}
}
}行高亮,行警告
在某一行添加 // [!code warning] 或 // [!code error] 注释将会为该行相应的着色。
js
export default {
data () {
return {
msg: 'Error',
msg: 'Warning'
}
}
}行号
ts
// 默认禁用行号 ts {1}
const line2 = 'This is line 2'
const line3 = 'This is line 3'ts
// 启用行号 ts:line-numbers {1}
const line2 = 'This is line 2'
const line3 = 'This is line 3'ts
// 行号已启用,并从 2 开始 ts:line-numbers=2 {1}
const line3 = 'This is line 3'
const line4 = 'This is line 4'代码组
::: code-group
cmd
npm install vitepresscmd
pnpm install vitepressRuntime API
useData
md
<script setup>
import { useData } from 'vitepress'
const { theme, page, frontmatter } = useData()
</script>
## Results
### Theme Data
<pre>{{ theme }}</pre>
### Page Data
<pre>{{ page }}</pre>
### Page Frontmatter
<pre>{{ frontmatter }}</pre>Theme Data
{
"logo": "./yushi.png",
"search": {
"provider": "local"
},
"siteTitle": "Narcissus",
"nav": [
{
"text": "前端",
"items": [
{
"text": "HTML",
"collapsed": true,
"link": "/front-end/html/label"
},
{
"text": "CSS",
"link": "/front-end/css/animation"
},
{
"text": "JS",
"link": "front-end/js/es6"
},
{
"text": "tool",
"items": [
{
"text": "Vue",
"link": "/front-end/vue/vue"
},
{
"text": "Taro",
"link": "/front-end/taro/taro"
},
{
"text": "Three",
"link": "/front-end/taro/taro"
}
]
},
{
"text": "Design pattern",
"link": "/front-end/design-pattern/singleton"
},
{
"text": "Micro frontend",
"link": "/front-end/micro-frontend/preface"
}
]
},
{
"text": "后端",
"items": [
{
"text": "Bootstrap",
"link": "/back-end/bootstrap"
},
{
"text": "EF6",
"link": "/back-end/EF6"
},
{
"text": "NestJS",
"link": "/back-end/NestJS"
}
]
},
{
"text": "日常",
"items": [
{
"text": "书籍",
"link": "/daily/book"
},
{
"text": "电影",
"link": "/daily/movie"
},
{
"text": "音乐",
"link": "/daily/music"
},
{
"text": "web",
"link": "/daily/web"
},
{
"text": "experience",
"link": "/daily/experience"
}
]
},
{
"text": "工作",
"items": [
{
"text": "Bug",
"link": "/work/bug"
},
{
"text": "Efficiency",
"link": "/work/efficiency"
},
{
"text": "Tools",
"items": [
{
"text": "VitePress",
"link": "/work/tools/vitepress"
},
{
"text": "Git",
"link": "/work/tools/git"
},
{
"text": "SQL",
"link": "/work/tools/sql"
},
{
"text": "Linux",
"link": "/work/tools/linux"
},
{
"text": "Node",
"link": "/work/tools/node"
}
]
},
{
"text": "Team",
"link": "/work/team"
}
]
}
],
"sidebar": {
"/front-end/html/": [
{
"text": "HTML",
"collapsed": true,
"items": [
{
"text": "HTML基础",
"link": "/front-end/html/label"
},
{
"text": "HTML5",
"link": "/front-end/html/html5"
}
]
}
],
"/front-end/css/": [
{
"text": "CSS",
"items": [
{
"text": "Amimation",
"link": "/front-end/css/animation"
}
]
}
],
"/front-end/js/": [
{
"text": "JS",
"items": [
{
"text": "ES6",
"link": "/front-end/js/es6"
},
{
"text": "WebAPI",
"link": "/front-end/js/webAPI"
},
{
"text": "Principle",
"link": "/front-end/js/principle"
},
{
"text": "Wheels",
"link": "/front-end/js/wheels"
}
]
}
],
"/front-end/vue/": [
{
"text": "vue",
"items": [
{
"text": "vue start",
"link": "/front-end/vue/vue"
},
{
"text": "vue base",
"link": "/front-end/vue/vue-base"
}
]
}
],
"/front-end/design-pattern/": [
{
"text": "Design Pattern",
"items": [
{
"text": "singleton",
"link": "/front-end/design-pattern/singleton"
},
{
"text": "strategy",
"link": "/front-end/design-pattern/strategy"
},
{
"text": "proxy",
"link": "/front-end/design-pattern/proxy"
},
{
"text": "subscribe",
"link": "/front-end/design-pattern/subscribe"
}
]
}
],
"/front-end/micro-frontend/": [
{
"text": "Micro Frontend",
"items": [
{
"text": "preface",
"link": "/front-end/micro-frontend/preface"
},
{
"text": "Iframe",
"link": "/front-end/micro-frontend/iframe"
},
{
"text": "Single-spa",
"link": "/front-end/micro-frontend/single-spa"
},
{
"text": "Qiankun",
"link": "/front-end/micro-frontend/qiankun"
},
{
"text": "Wujie",
"link": "/front-end/micro-frontend/wujie"
},
{
"text": "EMP",
"link": "/front-end/micro-frontend/emp"
},
{
"text": "Postscript",
"link": "/front-end/micro-frontend/postscript"
}
]
}
]
},
"aside": true,
"outline": [
1,
3
],
"socialLinks": [
{
"icon": "github",
"link": "https://github.com/formattor"
},
{
"icon": {
"svg": "<svg t=\"1712666390765\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"4281\" width=\"200\" height=\"200\"><path d=\"M512 0c282.784 0 512 229.216 512 512s-229.216 512-512 512S0 794.784 0 512 229.216 0 512 0z m189.952 752l11.2-108.224c-31.904 9.536-100.928 16.128-147.712 16.128-134.464 0-205.728-47.296-195.328-146.304 11.584-110.688 113.152-145.696 232.64-145.696 54.784 0 122.432 8.8 151.296 18.336L768 272.704C724.544 262.24 678.272 256 599.584 256c-203.2 0-388.704 94.88-406.4 263.488C178.336 660.96 303.584 768 535.616 768c80.672 0 138.464-6.432 166.336-16z\" fill=\"#707070\" p-id=\"4282\"></path></svg>"
},
"link": "https://blog.csdn.net/Formattor"
},
{
"icon": {
"svg": "<svg t=\"1712666459139\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"5420\" width=\"200\" height=\"200\"><path d=\"M278.8864 148.1728c14.336-8.192 32.6144-9.3696 47.8208-2.6624 11.3664 4.6592 19.968 13.824 29.184 21.6064 38.144 32.9216 75.9808 66.304 114.2784 99.0208h80.4352c38.2976-32.768 76.0832-66.048 114.2272-98.9696 9.2672-7.7824 17.8688-16.896 29.2864-21.6576 14.7456-6.5024 32.4608-5.632 46.592 2.048 16.5888 8.5504 28.1088 26.2656 28.8256 44.9536 1.024 13.568-3.84 27.2896-12.3392 37.7856-7.5264 8.3456-16.5376 15.2064-24.8832 22.6816-5.3248 4.4032-10.1376 9.5232-16.0256 13.2096 23.6544 0 47.2576-0.256 70.912 0.1536 31.1296 0.8192 61.44 14.592 82.8928 37.1712 22.6304 22.2208 35.5328 53.5552 35.4816 85.1968 0.1024 108.4416 0 216.9344 0.0512 325.376-0.1024 16.384 0.8192 33.024-2.816 49.152-6.656 32.9728-28.8256 61.5936-56.9856 79.36a121.344 121.344 0 0 1-64.7168 17.7664H263.2704c-16.9984-0.1024-34.2528 0.8704-50.9952-2.8672-32.1024-6.4512-60.0064-27.648-77.824-54.6304a121.088 121.088 0 0 1-19.2512-66.9696v-321.536c0.1024-16.5376-0.9216-33.1776 2.4576-49.408 10.24-52.9408 58.9312-96.1024 112.9984-98.4576 24.6272-0.768 49.3056-0.2048 73.9328-0.3072-11.6224-8.3968-21.8112-18.5344-32.768-27.7504a55.04 55.04 0 0 1-20.5312-45.9264c0.7168-18.2272 11.6736-35.584 27.648-44.3392m-13.056 221.7984c-20.992 3.7376-38.912 20.3264-44.7488 40.7552a76.4928 76.4928 0 0 0-2.3552 21.7088c0.1024 89.0368-0.0512 178.0736 0.0512 267.1616-0.4096 24.2176 16.3328 47.1552 39.1168 54.8864 8.1408 2.9696 16.896 3.0208 25.3952 3.072 153.1904-0.1024 306.432 0.0512 459.6224-0.0512 22.4768 0.8704 44.0832-13.1072 53.5552-33.28 5.7856-11.5712 5.6832-24.7296 5.4784-37.376v-248.832c0-9.1136 0.3072-18.4832-2.304-27.2896a58.7776 58.7776 0 0 0-36.864-38.656c-9.7792-3.584-20.4288-3.0208-30.6688-3.072H292.5056c-8.8576 0-17.8176-0.3072-26.624 0.9728z\" fill=\"#707070\" p-id=\"5421\"></path><path d=\"M358.7072 455.5264c14.6432-1.4848 29.8496 3.2768 41.0112 12.8 12.4416 10.24 19.5584 26.112 19.7632 42.1376 0.3584 19.4048 0.1024 38.8608 0.1024 58.2656 0 12.8-3.3792 25.8048-11.3152 35.9424a54.9888 54.9888 0 0 1-48.4864 21.76 54.9376 54.9376 0 0 1-44.032-28.2624c-6.8096-11.6736-7.3728-25.4976-7.168-38.6048 0.4096-18.8416-1.024-37.7856 0.8704-56.576a55.296 55.296 0 0 1 49.2544-47.4624z m292.4544 0a55.2448 55.2448 0 0 1 60.7232 53.0432c0.8192 18.2272 0.1024 36.4544 0.4096 54.6816 0.1024 12.8-1.4336 26.112-8.4992 37.12-10.24 17.0496-30.3104 27.5456-50.176 26.112a55.04 55.04 0 0 1-43.3664-24.9856c-7.936-11.776-9.472-26.2656-9.1136-40.0896 0.3584-18.7392-0.6656-37.4784 0.6144-56.1664 1.8432-25.6 23.9104-47.5136 49.408-49.664z\" fill=\"#707070\" p-id=\"5422\"></path></svg>"
},
"link": "https://space.bilibili.com/173887579"
}
],
"footer": {
"message": "我的页脚",
"copyright": "yushi © 2024-present"
},
"editLink": {
"pattern": "https://github.com/formattor/narcissus/tree/main/docs/:path",
"text": "Edit this page on GitHub"
},
"lastUpdated": {
"text": "Updated at",
"formatOptions": {
"dateStyle": "full",
"timeStyle": "medium"
}
},
"docFooter": {
"prev": "往前",
"next": "往后"
},
"returnToTopLabel": "往上"
}Page Data
{
"title": "配置",
"description": "",
"frontmatter": {},
"headers": [],
"relativePath": "work/tools/vitepress.md",
"filePath": "work/tools/vitepress.md",
"lastUpdated": 1713371045000
}Page Frontmatter
{}useRoute
md
<script setup>
import { useData } from 'vitepress'
const { theme, page, frontmatter } = useData()
</script>
## Results
### path
<pre>{{ path }}</pre>
### data
<pre>{{ data }}</pre>
### component
<pre>{{ component }}</pre>path
/narcissus/work/tools/vitepress.html
data
{
"title": "配置",
"description": "",
"frontmatter": {},
"headers": [],
"relativePath": "work/tools/vitepress.md",
"filePath": "work/tools/vitepress.md",
"lastUpdated": 1713371045000
}component
{
"name": "work/tools/vitepress.md",
"__ssrInlineRender": true
}useRouter
md
<script setup>
import { useRouter } from 'vitepress'
const { route, go, onBeforeRouteChange, onBeforePageLoad, onAfterRouteChanged } = useRouter()
</script>
## Results
### route
<pre>{{ route }}</pre>
### go
<pre>{{ go }}</pre>
### onBeforeRouteChange
<pre>{{ onBeforeRouteChange }}</pre>
### onBeforePageLoad
<pre>{{ onBeforePageLoad }}</pre>
### onAfterRouteChanged
<pre>{{ onAfterRouteChanged }}</pre>route
{
"path": "/narcissus/work/tools/vitepress.html",
"component": {
"name": "work/tools/vitepress.md",
"__ssrInlineRender": true
},
"data": {
"title": "配置",
"description": "",
"frontmatter": {},
"headers": [],
"relativePath": "work/tools/vitepress.md",
"filePath": "work/tools/vitepress.md",
"lastUpdated": 1713371045000
}
}go
async function go(href = inBrowser ? location.href : "/") {
var _a, _b;
href = normalizeHref(href);
if (await ((_a = router.onBeforeRouteChange) == null ? void 0 : _a.call(router, href)) === false)
return;
if (inBrowser && href !== normalizeHref(location.href)) {
history.replaceState({ scrollPosition: window.scrollY }, "");
history.pushState({}, "", href);
}
await loadPage(href);
await ((_b = router.onAfterRouteChanged) == null ? void 0 : _b.call(router, href));
}onBeforeRouteChange
onBeforePageLoad
onAfterRouteChanged
一分钟建站
本地搭建环境
创建文件夹doc
文件夹下安装vitepress
npm add -D vitepress- 初始化vitepress
npx vitepress init选择建在docs文件夹下
◇ Where should VitePress initialize the config?
│ ./docs本地下载完成,使用npm run docs:dev启动
- 在config.mts中配置base文件路径
base: "/test/"远程仓库与部署
- 创建远程public仓库test
和base文件名称保持一致
- 连接本地与远程仓库
git init创建.gitignore文件
node_modules/- page页面配置

- Action页面创建deploy.yml文件
注意事项
path路径填写docs
node版本与本地一致
npm版本与本地一致
deploy.yml
yml
# 构建 VitePress 站点并将其部署到 GitHub Pages 的示例工作流程
#
name: Deploy VitePress site to Pages
on:
# 在针对 `main` 分支的推送上运行。如果你
# 使用 `master` 分支作为默认分支,请将其更改为 `master`
push:
branches: [main]
# 允许你从 Actions 选项卡手动运行此工作流程
workflow_dispatch:
# 设置 GITHUB_TOKEN 的权限,以允许部署到 GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# 只允许同时进行一次部署,跳过正在运行和最新队列之间的运行队列
# 但是,不要取消正在进行的运行,因为我们希望允许这些生产部署完成
concurrency:
group: pages
cancel-in-progress: false
jobs:
# 构建工作
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0 # 如果未启用 lastUpdated,则不需要
# - uses: pnpm/action-setup@v3 # 如果使用 pnpm,请取消注释
# - uses: oven-sh/setup-bun@v1 # 如果使用 Bun,请取消注释
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
cache: npm # 或 pnpm / yarn
- name: Setup Pages
uses: actions/configure-pages@v4
- name: Install dependencies
run: npm ci # 或 pnpm install / yarn install / bun install
- name: Build with VitePress
run: npm run docs:build # 或 pnpm docs:build / yarn docs:build / bun run docs:build
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: docs/.vitepress/dist
# 部署工作
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
needs: build
runs-on: ubuntu-latest
name: Deploy
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4- 成功!
