该系列已更新文章:

分享一个实用的 vite + vue3 组件库脚手架工具,提升开发效率

开箱即用 yyg-cli 脚手架:快速创建 vue3 组件库和vue3 全家桶项目

Vue3 企业级优雅实战 - 组件库框架 - 1 搭建 pnpm monorepo

Vue3 企业级优雅实战 - 组件库框架 - 2 初始化 workspace-root

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

Vue3 企业级优雅实战 - 组件库框架 - 4 组件库的 CSS 架构

Vue3 企业级优雅实战 - 组件库框架 - 5 组件库通用工具包

Vue3 企业级优雅实战 - 组件库框架 - 6 搭建example环境

前面完成了组件库的开发环境搭建和 example,咱们可以在 example 中通过业务驱动组件的开发和完善。但组件库开发的目的是给其他开发人员使用,这时候就需要通过文档来展示组件库的使用以及各个组件的 API、方法、插槽等。本文在前面文章的基础上继续实现组件库文档的开发和构建。组价库的文档咱们使用 vitepress 来实现,在之前的文章《vitepress搭建组件库文档》已经详细介绍了 vitepress 1.0 的使用,该文章中谈到的内容本文就快速略过。

1 搭建组件库文档环境

1.1 初始化工程

前面在工程根目录创建 docs 目录,在命令行中进入 docs 目录,使用 pnpm 初始化:

pnpm init

安装 vitepress 为开发依赖:

pnpm install vitepress -D

修改 package.json 文件的 name,并添加 scripts:

{
"name": "@yyg-demo-ui/docs",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"dev": "vitepress dev",
"build": "vitepress build",
"serve": "vitepress serve"
},
"keywords": [],
"author": "程序员优雅哥",
"license": "ISC",
"devDependencies": {
"vitepress": "1.0.0-alpha.28"
}
}

1.2 创建目录及文件

docs 目录下创建 .vitepresspubliccomponentsdemosguide,分别存放 vitepress 配置文件、公共资源目录、组件文档描述、文档中的 demo、组价库的其他说明文档。放一个 logo.png 图片到 public 目录下。

继续在 docs 目录下依次创建下列文件:

  1. 组件库首页 index.md
---
layout: home title: YYG-DEMO-UI
editLink: true
lastUpdated: true
hero:
name: yyg-demo-ui
text: YYG Vue3企业级中后台组件库
tagline: 组件库描述 / SLOGAN
image:
src: /logo.png
alt: yyg-admin-ui
actions:
- theme: brand
text: 快速开始
link: /guide/
- theme: alt
text: 组件
link: /components/foo
features:
- icon:
title: 功能/特点 1
details: 功能/特点 1 具体描述信息。
- icon:
title: 功能/特点 2
details: 功能/特点 2 具体描述信息。
- icon: ️
title: 功能/特点 3。
details: 功能/特点 3 具体描述信息。
---
  1. 组件库菜单 components.ts
export const components = [
{ text: 'Foo 组件示例', link: '/components/foo' }
] // end

guide 目录下分别创建 index.mdquickstart.md

  1. guide/index.md
# 组件库介绍

yyg-demo-ui YYG Vue3企业级中后台组件库
  1. guide/quickstart.md
# 快速开始

xxxxxx

## 用法

全局安装组件库

components 目录下创建示例组件的说明文档 foo.md

# Foo 组件示例

1.3 添加插件并配置 vitepress

  1. 安装 vitepress 中预览组件的插件:
pnpm add @vitepress-demo-preview/component @vitepress-demo-preview/plugin

  1. .vitepress 目录下创建 config.ts
import { DefaultTheme, defineConfig } from 'vitepress'
import { componentPreview, containerPreview } from '@vitepress-demo-preview/plugin'
import { components } from '../components' const nav: DefaultTheme.NavItem[] = [
{ text: '指南', link: '/guide/' },
{ text: '组件', link: '/components/foo' }
] const sidebar: DefaultTheme.Sidebar = {
'/guide': [
{
text: '指南',
items: [
{ text: '组件库介绍', link: '/guide/' },
{ text: '快速开始', link: '/guide/quickstart' },
]
}
],
'/components': [{
items: [
...components
]
}]
} export default defineConfig({
title: 'yyg-admin-ui',
description: 'YYG Vue3企业级中后台组件库',
lang: 'cn-ZH',
base: '/',
lastUpdated: true,
themeConfig: {
logo: '/logo.png',
siteTitle: 'yyg-admin-ui',
outline: 3,
socialLinks: [
{ icon: 'github', link: 'https://github.com/vuejs/vitepress' }
],
nav,
sidebar
},
markdown: {
theme: {
light: 'vitesse-light',
dark: 'vitesse-dark'
},
lineNumbers: true,
config(md) {
md.use(componentPreview)
md.use(containerPreview)
}
}
})
  1. .vitepress 目录下创建 theme 目录,并在 theme 中创建 index.ts
import DefaultTheme from 'vitepress/theme'
import { AntDesignContainer } from '@vitepress-demo-preview/component'
import '@vitepress-demo-preview/component/dist/style.css'
import { EnhanceAppContext } from 'vitepress' export default {
...DefaultTheme,
enhanceApp(ctx: EnhanceAppContext) {
ctx.app.component('demo-preview', AntDesignContainer)
}
}

此时组件库的文档结构就搭建好了,可以在 docs 目录下执行 pnpm run dev,测试服务是否能正常启动,页面是否正常显示。

2 编写组件的文档

上一步已经引入了用于展示组件 demo 的插件,这一步就简单了。

2.1 安装 element plus 和组件库

  1. docs 目录下安装依赖:
pnpm install element-plus
pnpm install @yyg-demo-ui/yyg-demo-ui
  1. .vitepress/theme/index.ts 中引入组件库:
...
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import YygDemoUi from '@yyg-demo-ui/yyg-demo-ui'
...
export default {
...DefaultTheme,
enhanceApp(ctx: EnhanceAppContext) {
ctx.app.use(ElementPlus)
ctx.app.use(YygDemoUi)
ctx.app.component('demo-preview', AntDesignContainer)
}
}

2.2 编写demo

docs/demos 目录下创建子目录 foo,在 foo 目录下创建两个组件:

foo-1.vue

<template>
<el-button type="primary">测试按钮</el-button>
</template>

foo-2.vue

<template>
<yyg-foo :msg="msg"></yyg-foo>
</template> <script lang="ts" setup>
import { ref } from 'vue' const msg = ref('hello custom component')
</script>

2.3 vite 配置文件

docs 目录下创建 vite 的配置文件 vite.config.ts,该文件主要配置开发端口和 jsx 插件:

import { defineConfig } from 'vite'
import VueJsx from '@vitejs/plugin-vue-jsx' export default defineConfig({
plugins: [
VueJsx()
],
server: {
port: 3100
}
})

2.4 在组件库文档中展示 demo

docs/components/foo.md 文件中展示上面两个 demo:

# Foo 组件示例

第一个示例:

<preview path="../demos/foo/foo-1.vue" title="基本使用" description="测试使用 Element Plus 组件"></preview>

第二个示例:

<preview path="../demos/foo/foo-2.vue" title="基本使用" description="测试使用自定义组件库组件"></preview>

## 组件介绍

3 运行组件库文档

3.1 本地开发

pnpm run dev

访问 http://localhost:3100/components/foo.html,可以看到 foo 组件的说明文档:

3.2 打包构建

  1. 打包组件库文档:
pnpm run build

打包后的文档位于:docs/.vitepress/dist 中。

  1. 预览打包后的结果:
pnpm run serve

预览的效果与本地启动服务的效果一致。

到此咱们已经完成了组件库文档的开发环境搭建和打包构建,下一篇文章将分享加速器 —— 创建新组建的脚手架 cli 的开发。

感谢你阅读本文,如果本文给了你一点点帮助或者启发,还请三连支持一下,点赞、关注、收藏,程序员优雅哥会持续与大家分享更多干货

Vue3 企业级优雅实战 - 组件库框架 - 7 组件库文档的开发和构建的更多相关文章

  1. Vue3 企业级优雅实战 - 组件库框架 - 1 搭建 pnpm monorepo

    前两篇文章分享了基于 vite3 vue3 的组件库基础工程 vue3-component-library-archetype 和用于快速创建该工程的工具 yyg-cli,但在中大型的企业级项目中,通 ...

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

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

  3. Vue3 企业级优雅实战 - 组件库框架 - 2 初始化 workspace-root

    上文已经搭建了 pnpm + monorepo 的基础环境,本文对 workspace-root 进行初始化配置,包括:通用配置文件.公共依赖.ESLint. 1 通用配置文件 在项目 根目录 下添加 ...

  4. Vue3 企业级优雅实战 - 组件库框架 - 4 组件库的 CSS 架构

    在前一篇文章中分享了搭建组件库的基本开发环境.创建了 foo 组件模块和组件库入口模块,本文分享组件库的样式架构设计. 1 常见的 CSS 架构模式 常见的 CSS 架构模式有很多:OOCSS.ACS ...

  5. 从零开始编写自己的C#框架(4)——文档编写说明

    在写本系列的过程中,了解得越多越不知道从哪里做为切入点来写,几乎每个知识点展开来说都可以写成一本书.而自己在写作与文档编写方面来说,还是一个初鸟级别,所以只能从大方面说说,在本框架开发所需的范围内来讲 ...

  6. .Net Core3.0 WebApi 项目框架搭建 二:API 文档神器 Swagger

    .Net Core3.0 WebApi 项目框架搭建:目录 为什么使用Swagger 随着互联网技术的发展,现在的网站架构基本都由原来的后端渲染,变成了:前端渲染.后端分离的形态,而且前端技术和后端技 ...

  7. Vue企业级优雅实战04-组件开发01-SVG图标组件

    (后续的文章 公众号会提前一周更新,欢迎关注文末的微信公众号:程序员搞艺术) 预览本文的实现效果: # gitee git clone git@gitee.com:cloudyly/dscloudy- ...

  8. Vue企业级优雅实战-00-开篇

    从2018.1.开始参与了多个企业的中台建设,这些中台的技术选型几乎都是基于 Spring Cloud 微服务架构 + 基于 Vue 全家桶的前端.我前后端架构及开发我几乎各占一半的精力,在企业级前端 ...

  9. Vue企业级优雅实战02-准备工作03-提交 GIT 平台

    代码管理.版本管理是件老大难的事情,尤其多人开发中的代码冲突.突击功能时面临的 hotfix 等.本文只是简单说说如何将一套代码提交到两个 Git 平台(GitHub.GitEE)上.其他的 Git ...

  10. .NET操作RabbitMQ组件EasyNetQ使用中文简版文档。

    本文出自EasyNetQ官方文档,内容为自己理解加翻译.文档地址:https://github.com/EasyNetQ/EasyNetQ/wiki/Quick-Start EasyNetQ简介 Ea ...

随机推荐

  1. KingbaseES 匿名块如何传递参数

    匿名块的基本语法结构包括声明和执行两部分.匿名块每次提交都被重新编译和执行.因为匿名块没有名称并不在数据库中存储,所以匿名块不能直接从其他PL/SQL 块中调用. 定义语法: [ DECLARE ] ...

  2. Elasticsearch7.6.2 RestHighLevelClient查询用法 must should(and or 关系)

    1. 引入jar <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId&g ...

  3. C语言大作业---学生信息管理系统

    xxxx信息管理系统 简介 因为大作业规定的踩分项就那么多,为了不浪费时间 + 得分,就写成这样.现在看看,命名不规范,书写风格糟糕,全塞在一个源代码中······ 不过,应付大作业是没问题的 实验报 ...

  4. CentOS7 系统服务器初始化配置、安全加固、内核升级优化常用软件安装的Shell脚本分享

    转载自:https://www.bilibili.com/read/cv13875630?spm_id_from=333.999.0.0 描述: 适用于企业内部 CentOS7 系列操作服务器初始化. ...

  5. fastdfs-zyc管理FastDFS的web界面

    俩压缩包根据大小重命名以下,按图片所示 把1_fastdfs-zyc.7z重命名为fastdfs-zyc.7z.001 把2_fastdfs-zyc.7z重命名为fastdfs-zyc.7z.002 ...

  6. windows系统下使用bat脚本文件设置 tomcat 系统环境变量

    说明:在一个bat文件中设置tomcat环境变量后,不能直接使用,需要另起一个bat文件才能使用 号开头的行不要写在bat文件中 # tomcat1.bat # 这个bat文件实现的功能:设置环境变量 ...

  7. 使用docker-compose部署WordPress项目

    创建空文件夹 假设新建一个名为 wordpress 的文件夹,然后进入这个文件夹. 创建 docker-compose.yml 文件 docker-compose.yml 文件将开启一个 wordpr ...

  8. 使用Recoding Rules优化性能

    通过PromQL可以实时对Prometheus中采集到的样本数据进行查询,聚合以及其它各种运算操作.而在某些PromQL较为复杂且计算量较大时,直接使用PromQL可能会导致Prometheus响应超 ...

  9. 黑马程序员关于MongoDB的教程

    基础:https://files.cnblogs.com/files/sanduzxcvbnm/mongodb_base.pdf 理解 MongoDB的业务场景.熟悉MongoDB的简介.特点和体系结 ...

  10. 12. Fluentd部署:多Workers进程模式

    介绍如何使用Fluentd的多worker模式处理高访问量的日志事件.此模式会运行多个worker进程以最大利用多核CPU. 原理 默认情况下,一个Fluentd实例会运行一个监控进程和一个工作进程. ...