VitePress 基本使用

VitePress 是一个基于 Vue 和 Vite 的静态网站生成器,特别适合用于创建文档网站。通过之前撰写 EasyEditor 的文档经验,我将带你了解 VitePress 的基本使用方法以及一些高级配置技巧。

什么是 VitePress?

VitePress 是一个静态站点生成器 (SSG),专为构建快速、以内容为中心的站点而设计。简而言之,VitePress 获取用 Markdown 编写的内容,对其应用主题,并生成可以轻松部署到任何地方的静态 HTML 页面。

快速开始

初始化

在终端中运行以下命令,初始化一个新的 VitePress 项目:

npx vitepress init

你会遇到以下提示,需要回答几个简单的问题:

┌  Welcome to VitePress!
│
◇  Where should VitePress initialize the config?
│  ./docs
│
◇  Site title:
│  My Awesome Project
│
◇  Site description:
│  A VitePress Site
│
◇  Theme:
│  Default Theme
│
◇  Use TypeScript for config and theme files?
│  Yes
│
◇  Add VitePress npm scripts to package.json?
│  Yes
│
└  Done! Now run npm run docs:dev and start writing.

Tips:
- Make sure to add  docs/.vitepress/dist and  docs/.vitepress/cache to your .gitignore file.

这将创建一个名为 docs 的文件夹,并在其中生成基础配置文件和示例页面。

同时,package.json 中会自动添加以下脚本命令:

{
  "scripts": {
    "docs:dev": "vitepress dev",
    "docs:build": "vitepress build",
    "docs:preview": "vitepress preview"
  }

启动

进入项目目录,启动开发服务器:

pnpm docs:dev

现在,你可以在浏览器中访问 http://localhost:5173 查看你的文档网站了。

在这里插入图片描述

配置详解

基础配置

VitePress 的配置文件位于 .vitepress/config.mts。下面是一个简单的基础配置示例:

// .vitepress/config.ts
import { defineConfig } from 'vitepress'

// defineConfig 是 VitePress 提供的配置函数
// 用来返回一个 VitePress 配置对象
export default defineConfig({
  // 站点的标题,通常显示在浏览器标签上
  title: 'My Docs',
  // 站点的描述,用于 SEO 或浏览器预览
  description: '我的文档网站',
  themeConfig: {
    // 配置网站顶部的导航栏
    nav: [
      // 导航项,包含文字和跳转的链接
      { text: '首页', link: '/' },
      { text: '指南', link: '/guide/' }
    ],
    // 配置侧边栏
    sidebar: {
      // 侧边栏的路径和对应的页面链接
      '/guide/': [
        { text: '介绍', link: '/guide/' },
        { text: '快速开始', link: '/guide/getting-started' }
      ]
    }
  }
})

首页配置

VitePress 提供了内置的首页布局,可以通过 frontmatter 配置。以 EasyEditor 的首页为例:

---
# 配置首页的布局类型
layout: home
# 首页的主标题
title: "EasyEditor: 用于构建可视化应用平台的插件化跨框架低代码引擎"

# hero 是首页的展示区,通常包含项目的名称、简介、图片和操作按钮
hero:
  # hero 区域的主标题
  name: EasyEditor
  # hero 区域的副标题
  text: 低代码引擎
  # hero 区域的描述,用来简短说明产品或项目的特点
  tagline: 用于构建可视化应用平台的插件化跨框架低代码引擎
  # hero 区域的图片,支持 light 和 dark 模式
  image:
    light: /logo.svg        # light 模式下显示的 logo
    dark: /logo-dark.svg    # dark 模式下显示的 logo
    alt: EasyEditor         # 图片的替代文本
  # hero 区域的操作按钮
  actions:
    - theme: brand              # 按钮的主题样式
      text: 什么是 EasyEditor?  # 按钮文字
      link: /guide/why          # 按钮链接
    - theme: alt
      text: 快速开始
      link: /guide/getting-started
    - theme: alt
      text: API 参考
      link: /reference/overview

# features 是展示项目特点的部分
features:
  - title: 解耦设计                                 # 特点的标题
    icon: 🔌                                       # 特点图标,可以是 emoji 或自定义图标
    details: 引擎核心与框架无关,支持多种框架渲染扩展  # 特点的描述
  - title: 插件化架构
    icon: 🧩
    details: 灵活的插件系统设计,生命周期管理、热键绑定、类扩展机制、依赖注入...
---

多语言支持

VitePress 支持通过 locales 配置实现多语言站点。你可以将公共配置(如 logo、主题插件、搜索配置等)抽离到共享配置文件中,然后根据语言调整具体内容(如 navsidebar)。

VitePress 会自动合并 locales 下的语言特定配置与顶层配置。只需在子语言配置中填写差异部分。

import { defineConfig } from 'vitepress'

export default defineConfig({
  // 公共配置(可抽离到 shared.ts)

  locales: {
    root: {
      label: 'English',
      lang: 'en'
    },
    fr: {
      label: 'French',
      lang: 'fr',           // 设置 <html lang="fr">
      link: '/fr/guide'     // 显示在语言切换菜单中的链接(默认为 /fr/)

      // 可以添加 fr 特定的 themeConfig、sidebar、nav 等配置
    }
  }
})

多语言的目录结构:

  • 存在 root 配置时(如英文为默认语言):
docs/
├─ fr/
│  └─ foo.md
├─ es/
│  └─ foo.md
├─ foo.md        # 默认语言的页面(root)
  • 没有 root 配置时(所有语言都在子目录中):
docs/
├─ en/
│  ├─ foo.md
├─ es/
│  ├─ foo.md
├─ fr/
   ├─ foo.md

导航栏配置

导航栏是网站的主要导航方式,可以包含多级菜单:

const Nav: DefaultTheme.NavItem[] = [
  {
    text: '指南',
    items: [
      {
        text: '入门指南',
        items: [
          { text: '为什么选择', link: '/guide/why' },
          { text: '快速开始', link: '/guide/getting-started' }
        ],
      },
      {
        text: '场景实践',
        items: [
          { text: '大屏设计', link: '/guide/scenarios/dashboard/' },
          { text: '表单设计', link: '/guide/scenarios/form/' },
        ],
      },
    ],
    activeMatch: '^/guide/',
  },
  {
    text: '原理',
    items: [...DesignItems],
  }
]

侧边栏配置

侧边栏通常按照页面路径进行分组:

const Sidebar: DefaultTheme.Sidebar = {
  '/guide/': [
    {
      text: '入门指南',
      items: GettingStartedGuides,
    },
    {
      text: '扩展开发',
      items: ExtensionGuides,
    }
  ],
  '/design/': DesignItems,
  '/reference/': ReferenceItems,

高级用法

使用插件

VitePress 提供了丰富的插件系统,可以帮助扩展文档站点的功能和优化。EasyEditor 项目中使用了 vitepress-plugin-group-icons 插件,它主要用于在 Markdown 和 Vite 配置中统一管理和显示图标。

在这里插入图片描述

vitepress-plugin-group-icons 插件有两个主要部分:一个是 Markdown 插件,用于在 Markdown 内容中使用图标,另一个是 Vite 插件,用于处理图标的相关功能。

import { defineConfig } from 'vitepress'
import { groupIconMdPlugin, groupIconVitePlugin } from 'vitepress-plugin-group-icons'

export const shared = defineConfig({
  markdown: {
    config(md) {
      // 使用 groupIconMdPlugin 插件来处理 Markdown 中的图标
      md.use(groupIconMdPlugin)
    },
  },
  vite: {
    plugins: [
      // 使用 groupIconVitePlugin 插件来处理 Vite 中的图标配置
      groupIconVitePlugin(),
    ],
  },
})

自定义头部元素

你可以在配置中添加自定义的 <head> 元素:

head: [
  ['link', { rel: 'icon', href: '/favicon.svg', type: 'image/svg+xml' }],
  ['link', { rel: 'alternate icon', href: '/favicon.ico', type: 'image/png', sizes: '16x16' }],
  ['meta', { name: 'author', content: 'Your Name' }],
]

构建

构建文档:

pnpm docs:build

默认情况下,构建输出会放在 .vitepress/dist 目录中,可以通过 outDir 配置更改:

export const shared = defineConfig({
  outDir: './dist',
})

构建后的文件可以部署到任何静态网站托管服务,如 GitHub Pages、Netlify、Vercel 等。

实用技巧

大纲配置

你可以控制右侧大纲显示的标题级别。默认情况下,VitePress 只显示 h2 级别的标题。

themeConfig: {
  outline: [2, 3], // 只显示 h2 和 h3 标题
}

在这里插入图片描述

单页面配置

frontmatter 支持基于页面的配置。在每个 markdown 文件中,可以使用 frontmatter 配置来覆盖站点级别或主题级别的配置选项。此外,还有一些配置选项只能在 frontmatter 中定义。

你还可以在单个文档页面中自定义大纲显示,方法是在文档开头添加 outline 配置:

---
outline: deep
---

# Runtime API Examples

...

此配置会让文档展示更深层次的标题结构。

更多配置项可以查看 frontmatter 配置 | VitePress

总结

VitePress 是一个高效、易上手的静态文档生成工具,适合用于构建技术文档、项目文档等。通过本文的讲解,你应该已经了解了如何使用 VitePress 创建文档、配置站点和进行自定义。

更多细节请查阅 VitePress 官方文档

Docker 是一个开源的应用容器引擎,它允许开发者打包他们的应用以及应用的依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。使用 Docker 部署 VitePress,一个由 Vue.js 驱动的静态网站生成器,可以让你轻松地在任何支持 Docker 的环境中搭建开发环境,而不需要担心依赖环境配置的差异性。下面是使用 Docker 部署 VitePress基本步骤: 1. **创建 Dockerfile**:首先需要创建一个 Dockerfile 文件,这是 Docker 构建镜像的蓝图。在 Dockerfile 中,你可以指定一个基础镜像,并在该镜像的基础上安装 VitePress 所需的环境和依赖。 ```Dockerfile # 使用 node:latest 作为基础镜像 FROM node:latest # 设置工作目录 WORKDIR /usr/src/app # 将依赖文件复制到容器中,安装依赖 COPY package.json . RUN npm install # 将 VitePress 源文件复制到容器中 COPY . . # 暴露端口供外部访问 EXPOSE 8080 # 运行 VitePress 开发服务器或构建静态文件 CMD ["npm", "run", "dev"] # 或者 "npm run build" 来生成静态文件 ``` 2. **构建 Docker 镜像**:在 Dockerfile 所在目录下运行以下命令来构建你的 Docker 镜像。 ```bash docker build -t my-vitepress-app . ``` 3. **运行容器**:一旦镜像构建完成,你就可以通过以下命令来运行一个包含 VitePress 的容器了。 ```bash docker run -p 8080:8080 my-vitepress-app ``` 4. **访问应用**:在浏览器中打开 http://localhost:8080 ,你应该能看到你的 VitePress 网站运行起来了。 5. **开发和迭代**:在开发过程中,每次更改源代码后,你需要重新构建 Docker 镜像和运行容器来查看效果。对于更高效的开发流程,可以在 Dockerfile 中使用 `dockerize` 工具或 `docker-compose` 来监视文件的变化并自动重新构建和重启服务。 请注意,部署 VitePress 的具体步骤可能会根据你的项目配置和需求略有不同。确保 Dockerfile 中的命令与你的项目结构和构建过程相匹配。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值