VuePress2 搭建组件库文档

前言

在开发自有组件库时,需要有一个组件说明文档,以及组件使用示例。记录从开发到部署以及遇到的问题…

VuePress 安装

VuePress 传送门
选用VuePress主要是因为它的默认样式和Vue官方文档风格几乎一致。

1.安装依赖(因为用了vuepress-plugin-demoblock-plus
所以对安装依赖和版本有要求,可以看下文档说明)

npm i -D @vuepress/client@2.0.0-beta.51 vuepress@2.0.0-beta.51

2.在 package.json 中增加 scripts,用于启动项目和打包

{
  "scripts": {
    "docs:dev": "vuepress dev docs",
    "docs:build": "vuepress build docs"
  }
}

3.创建一个 README.md 文件
4.启动项目

npm run docs:dev

5.启动后页面显示

image.png

目录结构

目录结构如下:

image.png

配置文件

如果没有配置文件,VuePress 站点只会有一些基础的功能,为了更好的自定义你的组件库文档,需要在 .vuepress 目录下,创建 config.js 或 config.ts 文件。
这个是我的配置文件,包含了导航和侧边栏的一些配置:

import { defineUserConfig, defaultTheme } from 'vuepress'

export default defineUserConfig({
  lang: 'zh-CN',
  title: '组件库',
  description: '基于 vuepress 的组件库文档',
  theme: defaultTheme({
    navbar: [
      {
        text: '指南',
        link: '/guide/design',
      },
      {
        text: '组件',
        link: '/components/input.md',
      }
    ],
    sidebar: {
      '/guide': [
         {
          text: '基础',
          collapsible: false,
          children: [
            {
              text: '设计',
              link: '/guide/design'
            }
          ]
        }
      ],
      '/components': [
        {
          text: 'Basic 基础组件',
          collapsible: false,
          children:[]
        },
        {
          text: 'Form 表单组件',
          collapsible: false,
          children: [
            {
              text: 'Input 输入框',
              link: '/components/input'
            },
            {
              text: 'Select 选择器',
              link: '/components/select'
            }
          ]
        }
      ]
    },
    sidebarDepth: 1
  }),
  base: '/demo/'
})

客户端配置文件

在大多数情况下,配置文件已经足够帮助你配置好你的 VuePress 站点。不过,有些时候用户们可能希望直接添加一些客户端代码。 VuePress 通过客户端配置文件来支持这种需求,在.vuepress 目录下,创建 client.js 或者 client.ts。结构如下:

image.png

在 client.js 文件中,可以引入第三方的库。比如 element plus 或者 自有组件库。
对于自有组件库的引入,还需要注意引入的时机:
1.自有组件库,直接引入:

image.png
首先,对页面的影响:

  1. 组件库的示例,不能正常显示和执行;
  2. 控制台的警告信息

image.png

对打包的影响,直接会影响打包结果

image.png
其原因就是:这是因为vuepress build生成的静态文件都是通过node服务端渲染完成的。因此,当组件中不是在beforeMount 或者 mounted 钩子中访问浏览器 / DOM 的 API时,就会有问题。
所以需要改为客户端再去加载自有组件库:

image.png
这样,页面就可以显示了。build 的时候也不会出现问题了;
image.png

© 版权声明
THE END
喜欢就支持一下吧
点赞0

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYKpqC2H' (Errcode: 28 - No space left on device) in /www/wwwroot/583.cn/wp-includes/class-wpdb.php on line 2345
admin的头像-五八三
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

图形验证码
取消
昵称代码图片