最近找了一些文档的生成工具,结果发现了这个 React Styleguidist 可以通过注释,自动生成对应的文档,对于 react 库来说十分方便

安装

npm i -D react-styleguidist

// or

yarn add -D react-styleguidist

typescript 支持

npm i -D react-docgen-typescript

配置

这次的例子是使用 cra 来创建的项目,还有其他项目也是支持的 点击参考

在根文件夹下创建 styleguide.config.js 文件

可以使用如下的配置

const path = require('path')

const packagePath = path.resolve(
__dirname,
'package.json'
)
const packageFile = require(packagePath) module.exports = {
webpackConfig: require('./config/webpack.config'), // webpack 路径,可以用项目里的,也可以用webpack-blocks创建
components: 'src/component/**.tsx', // 写入对应目录的文档
propsParser: require('react-docgen-typescript').withCustomConfig(
'./tsconfig.json'
).parse, // 用来支持 tsx
verbose: true, // 打印详细信息
updateDocs(docs, file) {
if (docs.doclets.version) {
const version = packageFile.version docs.doclets.version = version
docs.tags.version[0].description = version
} return docs
}, // 在使用 @version 时 使用 package.json 的 version
version: packageFile.version, // 同上 使用 package.json 的 version
usageMode: 'expand', // 自动打开文档的缩放
pagePerSection: true, // 是否每页一个组件显示
title: "文档名" // 文档名
}

更加具体的配置项可以点此参考

编写注释

例子 1:

import React from 'react';

interface IProps {
/**
* 用户名
*/
name: string
/**
* 年龄
*/
age?: number
/**
* 工作
* @default doctor
*/
work?: string
/**
* 修改名字
* @param name
*/
changeName?: (name: string) => void
} /**
* Person 组件
* @version package.json
* @visibleName Person 组件名称的显示
*/
function Person(props: IProps) {
return <div>Person</div>
} export default Person;

添加使用用例:

    import Person from './Person';
<Person name="grewer"/>

图例:

例子 2:

import React from 'react';

interface IProps {
type: 'submit' | 'button' /**
* 尺寸
* @deprecated 使用 size2 替代
*/
size?: 'small' | 'default' /**
* 新的尺寸
* @since 1.1.0
* @default large
*/
size2?: 'small' | 'large'
} /**
* @link [antd button](https://ant.design/components/button-cn/) 可查看
*/
class Button extends React.Component<IProps, any> {
static config = {
desc: "这是 static 属性"
} /**
* 点击事件
* @public
*/
clickHandle = (ev: Event) => {
console.log('!')
} render(): React.ReactElement<any, string | React.JSXElementConstructor<any>> | string | number | {} | React.ReactNodeArray | React.ReactPortal | boolean | null | undefined {
return <div>{this.props.children}</div>
}
} export default Button;

图例:

结果

使用如下命令,可以创建一个 web 服务,在线修改文档:

styleguidist server

使用如下命令,可以将文档项目打包

styleguidist build

如果库正好在 GitHub 上面,可是开通 GitHub Pages 功能,将文档包提交进 GitHub;

本例结果页面查看:

https://grewer.github.io/styleguidist-boilerplate/styleguide/

结语

当你使用 react 开发而又想要写文档的使用, React Styleguidist 绝对是最好的选择之一

而如果你的库在 GitHub 上,那么就能够立即生成你的文档站点

React 通过注释自动生成文档的更多相关文章

  1. eoLinker 新功能发布,增加了识别代码注释自动生成文档功能

    产品地址:https://www.eolinker.com开源代码:https://www.eolinker.com/#/os/download在线生成代码注释工具:http://tool.eolin ...

  2. 使用 Swagger 自动生成 ASP.NET Core Web API 的文档、在线帮助测试文档(ASP.NET Core Web API 自动生成文档)

    对于开发人员来说,构建一个消费应用程序时去了解各种各样的 API 是一个巨大的挑战.在你的 Web API 项目中使用 Swagger 的 .NET Core 封装 Swashbuckle 可以帮助你 ...

  3. MVC WEB api 自动生成文档

    最近在一直在用webapi做接口给移动端用.但是让我纠结的时候每次新加接口或者改动接口的时候,就需要重新修改文档这让我很是苦恼.无意中发现.webapi居然有自动生成文档的功能....真是看见了救星啊 ...

  4. 使用swagger在netcorewebapi项目中自动生成文档

    一.背景 随着前后端分离模式大行其道,我们需要将后端接口撰写成文档提供给前端,前端可以查看我们的接口,并测试,提高我们的开发效率,减少无效的沟通.在此情况下,通过代码自动生成文档,这种需求应运而生,s ...

  5. 使用doctest代码测试和Sphinx自动生成文档

    python代码测试并自动生成文档 Tips:两大工具:doctest--单元测试.Sphinx--自动生成文档 1.doctest doctest是python自带的一个模块.doctest有两种使 ...

  6. SpringBoot 集成Swagger2自动生成文档和导出成静态文件

    目录 1. 简介 2. 集成Swagger2 2.1 导入Swagger库 2.2 配置Swagger基本信息 2.3 使用Swagger注解 2.4 文档效果图 3. 常用注解介绍 4. Swagg ...

  7. 【Sphinx】 为Python自动生成文档

    sphinx 前言 Sphinx是一个可以用于Python的自动文档生成工具,可以自动的把docstring转换为文档,并支持多种输出格式包括html,latex,pdf等 开始 建一个存放文档的do ...

  8. xcode 自动添加注释,生成文档

    一.自动生成注释代码        添加一个快捷键,生成 注释代码        ThisService 下载连接:http://wafflesoftware.net/thisservice/     ...

  9. 用doxygen自动生成文档

    1. 添加符合doxygen解析规则的注释 (比如函数说明,函数参数/返回值说明) 用qt-creator可以在函数上方一行键入“/**”,然后直接回车,就可以自动生成默认的格式. 2. 安装doxy ...

随机推荐

  1. HDU 5281 BestCoder Round #47 1002:Senior's Gun

    Senior's Gun  Accepts: 235  Submissions: 977  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: ...

  2. VNC连接桌面

    1.#yum -y install vnc *vnc-server* 2.修改VNCServer主配置文件 #vim /etc/sysconfig/vncservers 复制最后两行并去掉行首注释符, ...

  3. 颜色设置 <color name="white">#FFFFFF</color><!--白色 -->

    <?xml version="1.0" encoding="utf-8"?> <resources> <color name=&q ...

  4. PHP二维数组--去除指定列含有重复项的数组

    给定二维数组: $arr = array( '0' => array('张三',2,3,4), '1' => array('李四',2,3,4), '2' => array('张三' ...

  5. BGP的地址聚合

    aggregate-address ip make——多用于地址聚合命令. 但,因此很容易产生路由环路. 所以多加一个参数. as-set as-set,可以是BGP聚合路不丢失原来的AS-Path属 ...

  6. Codeforces Round #599 (Div. 2) Tile Painting

    题意:就是给你一个n,然后如果  n mod | i - j | == 0  并且 | i - j |>1 的话,那么i 和 j 就是同一种颜色,问你最大有多少种颜色? 思路: 比赛的时候,看到 ...

  7. nginx如何一个域名多个端口?

    方法一 写三个 listen server { listen 80; listen 81; listen 82; server_name www.sifou.com; ... 方法二 写三个serve ...

  8. vmbox 导入虚拟电脑之后无法上网

    先执行 ip addr 查看有没有分配ip 用root执行dhclient -v命令去通过DHCP协议获取一个ip,在下图的最后一行可以看到ip已经分配成功dhclient命令可以用来释放你的电脑的I ...

  9. 吴裕雄--天生自然 PHP开发学习:数组排序

    <?php $cars=array("Volvo","BMW","Toyota"); sort($cars); print_r($ca ...

  10. MySQL性能管理及架构设计:第2章 什么影响了MySQL性能

    第2章 什么影响了MySQL性能 2-1 影响性能的几个方面 1.服务器的硬件 2.服务器的操作系统 3.数据库的存储引擎 4.数据库的参数配置 5.数据库表结构设计和SQL语句的编写和优化 2-2 ...