vite 出现以前,vuepress 是搭建组件库文档不错的工具,支持以 Markdown 方式编写文档。伴随着 vite 的发展,vitepress 已经到了 1.0.0-alpha.22 版本,很多博客还是基于 0.x 版本,1.0.00.22 配置略有差别,尤其是一些 vitepress 插件不支持 1.0.0 版本,如 vitepress-theme-demo(用它可以方便的编写组件 demo)。虽然现在 1.0.0 还是 alpha 版本,咱也可以尝试使用,反正遇到什么坑就去填什么坑就可以了呗。

1 初始化工程

1.1 创建项目

创建目录(目录名自己取,这里我取名为 doc-vitepress-archetype)作为文档项目的根目录,在命令行进入该目录,使用 npm/yarn/pnpm 初始化为 npm 项目(生成 package.json)。

pnpm init

之前看过优雅哥文章的伙伴应该清楚,优雅哥一直习惯使用 yarn,但从本文开始,包管理工具我都换做 pnpm,具体原因在后面的搭建 monorepo 风格组件中再谈。

添加 vitepress 为开发依赖:

pnpm install vitepress -D

当前 vitepress 版本为 1.0.0-alpha.22,后面如果发布正式版后有 broken change,咱又更新文章。

1.2 创建目录及文件

  1. 在项目根目录下创建目录 docs(这里的目录名 docs 与后面配置 package.jsonscripts 的参数一致),并在 docs 目录中创建 index.md 文件
# Hello Vitepress
  1. docs 目录下创建公共资源目录 public,该目录与 vite vue3 项目的 public 一样,弄一个 logo.png 到该目录中。

此时目录结构为:

doc-vitepress-archetype/
|- docs/
|- index.md
|- public/
|- logo.png
|- package.json

1.3 添加 scripts

package.json 中添加项目的启动、打包、预览命令:

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

dev 是开发模式启动 vitepress;build 为打包;serve 是对打包后的结果启动服务预览。命令参数中的 docs 就是上面在根目录创建的目录名 docs

1.4 启动服务

在控制台执行 pnpm dev,启动服务,在页面访问控制台输出的地址,默认该页面支持 dark/light 切换。页面如下

dark 模式:

light 模式:

出现上面的界面,则 vitepress 开发环境配置成功。

2 配置 vitepress

接下来便是 vitepress 的配置。

2.1 首页配置

首先配置文档首页,让其看起来像一个组件库的首页。首页在 index.md 文件中使用 Frontmatter 编写。Frontmatter 本质上就是在 MD 文件中编写 yaml 获取 JSON,位于两个 --- 之间,且必须放在 MD 文件的顶部。可通过 Frontmatter 指定文档的标题、布局等属性。具体属性配置可以在官网上查看:

docs/index.md 内容修改如下:

---
layout: home title: 选项卡标题
titleTemplate: 选项卡描述
editLink: true
lastUpdated: true
hero:
name: 组件库名称
text: 组件库文本
tagline: 组件库副标题描述
image:
src: /logo.png
alt: YYG Admin UI
actions:
- theme: brand
text: 快速开始
link: /guide/
- theme: alt
text: 组件
link: /components/
features:
- icon:
title: 功能/特点 1
details: 功能/特点 1 具体描述信息。
- icon:
title: 功能/特点 2
details: 功能/特点 2 具体描述信息。
- icon: ️
title: 功能/特点 3。
details: 功能/特点 3 具体描述信息。
---

配置和界面的对应关系如下:

关于上面 Frontmatter 的几点说明:

  • layout:支持 dochomepage 三个值,这里使用 home 布局;
  • titletitleTemplate:在浏览器标签页上面显示;
  • features 中的 icon 目前只支持 emojis 图标。

2.2 App 配置

docs 目录下新建目录 .vitepress,在该目录中创建 config.ts 文件:

import { defineConfig } from 'vitepress'

export default defineConfig({
title: 'YYG Admin UI',
description: '基于 vite vue3 element-plus 组件库',
lang: 'cn-ZH',
base: '/',
lastUpdated: true
})

2.3 主题配置

主题配置通常用于配置 logo、顶部导航、左侧导航等信息。

docs 目录下创建 guidecomponents 目录,存放顶部导航的 指南组件 两个菜单,目录结构如下:

doc-vitepress-archetype/
|- docs/
|- index.md
|- public/
|- logo.png
|- guide/
|- index.md
|- quickstart.md
|- components/
|- basic-component1.md
|- basic-component2.md
|- common-component1.md
|- common-component2.md
|- pro-component1.md
|- pro-component2.md
|- package.json

1)在 docs/.vitepress/config.ts 中定义顶部导航数据:

import { DefaultTheme, defineConfig } from 'vitepress'

const nav: DefaultTheme.NavItem[] = [
{ text: '指南', link: '/guide/' },
{ text: '组件', link: '/components/basic-component1' },
// 顶部导航下拉菜单按如下方式:
/*
{
text: 'Dropdown Menu',
items: [
{ text: 'Item A', link: '/item-1' },
{ text: 'Item B', link: '/item-2' },
{ text: 'Item C', link: '/item-3' }
]
}
*/
]

2)在 docs/.vitepress/config.ts 中定义侧边栏数据:

const sidebar: DefaultTheme.Sidebar = {
'/guide': [
{
text: '指南',
items: [
{ text: '组件库介绍', link: '/guide/' },
{ text: '快速开始', link: '/guide/quickstart' },
]
}
],
'/components': [
{
text: '通用基础组件',
items: [
{ text: '基础组件 1', link: '/components/basic-component1' },
{ text: '基础组件 2', link: '/components/basic-component2' }
]
},
{
text: '通用业务组件',
items: [
{ text: '通用组件 1', link: '/components/common-component1' },
{ text: '通用组件 2', link: '/components/common-component2' }
]
},
{
text: '高级业务组件',
items: [
{ text: '高级组件 1', link: '/components/pro-component1' },
{ text: '高级组件 2', link: '/components/pro-component2' }
]
}
]
}

3)在 docs/.vitepress/config.ts 中配置主题:

export default defineConfig({
title: '浏览器标题',
description: '浏览器描述',
lang: 'cn-ZH',
base: '/',
lastUpdated: true,
themeConfig: {
logo: '/logo.png',
siteTitle: '组件库标题',
outline: 3,
socialLinks: [
{ icon: 'github', link: 'https://github.com/vuejs/vitepress' }
],
nav,
sidebar
}
})

2.4 预览效果

启动服务,预览效果如下:

本文完成了 vitepress 的首页和基本配置,下文介绍如何在 vitepress Markdown 文档中编写组件 Demo 及展示Demo的代码块。

Vitepress搭建组件库文档(上)—— 基本配置的更多相关文章

  1. Vitepress搭建组件库文档(下)—— 组件 Demo

    上文 <Vitepress搭建组件库文档(上)-- 基本配置>已经讨论了 vitepress 搭建组件库文档的基本配置,包括站点 Logo.名称.首页 home 布局.顶部导航.左侧导航等 ...

  2. 使用VitePress搭建及部署vue组件库文档

    每个组件库都有它们自己的文档.所以当我们开发完成我们自己的组件库必须也需要一个组件库文档.如果你还不了解如何搭建自己的组件库可以看这里->从零搭建Vue3组件库.看完这篇文章你就会发现原来搭建和 ...

  3. Web 前端 UI 组件库文档自动化方案 All In One

    Web 前端 UI 组件库文档自动化方案 All In One 需求 自动化 动态 好用 markdown element-ui 中示例和说明按照一定规则写在md文件中,调用md-loader将md文 ...

  4. 使用dumi生成react组件库文档并发布到github pages

    周末两天玩了下号称西湖区东半球最牛逼的react文档站点生成工具dumi,顺带结合github pages生成了react-uni-comps文档站, 一套弄下来,感觉真香,现在还只是浅尝,高级的特性 ...

  5. 【xingorg1-ui】基于vue3.0从0-1搭建组件库(一)环境配置与目录规划

    npm地址 github源码 开篇-环境配置 环境配置: 使用vue-cli搭建项目框架,需要用vue3的话,得先把vue-cli的版本升级到vue-cli@5以上 npm install -g @v ...

  6. vuepress搭建UI组件库文档踩坑篇

    为了实现组件效果预览及代码展示可折叠功能,使用了插件vuepress-plugin-demo-container 相关配置可参考官网说明文档 第一步 安装插件 npm i - D vuepress-p ...

  7. Vue3 企业级优雅实战 - 组件库框架 - 3 搭建组件库开发环境

    前文已经初始化了 workspace-root,从本文开始就需要依次搭建组件库.example.文档.cli.本文内容是搭建 组件库的开发环境. 1 packages 目录 前面在项目根目录下创建了 ...

  8. Docker最全教程之使用Node.js搭建团队技术文档站(二十三)

    前言 各种编程语言均有其优势和生态,有兴趣的朋友完全可以涉猎多门语言.在平常的工作之中,也可以尝试选择相对适合的编程语言来完成相关的工作. 在团队技术文档站搭建这块,笔者尝试了许多框架,最终还是选择了 ...

  9. 传智播客C/C++各种开发环境搭建视频工具文档免费教程

    传智播客作为中国IT培训的领军品牌,一直把握技术趋势,给大家带来最新的技术分享!传智播客C/C++主流开发环境免费分享视频文档中,就有写一个helloworld程序的示范.火速前来下载吧 所谓&quo ...

随机推荐

  1. C++ 漫谈哈夫曼树

    1. 前言 什么是哈夫曼树? 把权值不同的n个结点构造成一棵二叉树,如果此树满足以下几个条件: 此 n 个结点为二叉树的叶结点 . 权值较大的结点离根结点较近,权值较小的结点离根结点较远. 该树的带权 ...

  2. python常量与变量的本质

    python语法常量与变量的本质 python语法之注释 1.python语法注释有哪几种? (1.)单行注释 # 井号键单行注释 使用方法:首先在另起一行按('#')井号键进行注释,如果需要代码后面 ...

  3. 以太坊 layer2: optimism 源码学习(二) 提现原理

    作者:林冠宏 / 指尖下的幽灵.转载者,请: 务必标明出处. 掘金:https://juejin.im/user/1785262612681997 博客:http://www.cnblogs.com/ ...

  4. 圆形谷仓Circular Barn_Silver---(DP优化 / )队列 + 贪心(复杂度O(2n))---DD(XYX)​​​​​​​的博客

    目录 小数据 大数据 小数据 题目描述 农夫约翰有一个圆形的谷仓,谷仓分成了环形的n(3≤n≤1000)个房间,编号为1 , 2 , -- .每个房间有三个门,两个门通往两个相邻的房间,第三个门朝外. ...

  5. 四 多例模式【Multition Pattern】 来自CBF4LIFE 的设计模式

    出现在明朝,那三国期间的算不算,不算,各自称帝,各有各的地盘,国号不同.大家还记得那首诗<石灰吟>吗?作者是谁?于谦,他是被谁杀死的?明英宗朱祁镇,对,就是那个在土木堡之变中被瓦刺俘虏的皇 ...

  6. Java使用定时任务详解

    定时任务 目录 定时任务 SpringBoot定时任务 默认单线程 使用异步多线程 Spring定时任务XML配置(注解形式几乎同上) 使用springTask: ----springTask为spr ...

  7. 记一次用arthas排查jvm中CPU占用过高问题

    记一次使用arthas排查jvm中CPU占用过高问题.这工具屌爆了 碾压我目前使用的全部JVM工具. 安装 小试 curl -O https://arthas.aliyun.com/arthas-bo ...

  8. Nginx几种负载均衡方式介绍

    Nginx几种负载均衡方式介绍 前言 负载均衡就是Nginx将请求分摊到不同的服务器中,保证服务的可用性,缓解服务压力,保证服务的响应速度,即使某一个应用服务不可用,也可以保证业务的正常进行,并且方便 ...

  9. itoa与atoi函数

    // 自己参考并编写的itoa与atoi函数 // 支持10进制整形,支持16进制整形,支持负数 // 20220228,修复负数字符字符串会转换成正数的bug#include <stdio.h ...

  10. logstash另类输出到es

    filebeat配置文件: filebeat.inputs: - type: log enabled: true paths: - /opt/hkd-cloud/hkd-custom/hkd-cust ...