React 通过注释自动生成文档
最近找了一些文档的生成工具,结果发现了这个
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 通过注释自动生成文档的更多相关文章
- eoLinker 新功能发布,增加了识别代码注释自动生成文档功能
产品地址:https://www.eolinker.com开源代码:https://www.eolinker.com/#/os/download在线生成代码注释工具:http://tool.eolin ...
- 使用 Swagger 自动生成 ASP.NET Core Web API 的文档、在线帮助测试文档(ASP.NET Core Web API 自动生成文档)
对于开发人员来说,构建一个消费应用程序时去了解各种各样的 API 是一个巨大的挑战.在你的 Web API 项目中使用 Swagger 的 .NET Core 封装 Swashbuckle 可以帮助你 ...
- MVC WEB api 自动生成文档
最近在一直在用webapi做接口给移动端用.但是让我纠结的时候每次新加接口或者改动接口的时候,就需要重新修改文档这让我很是苦恼.无意中发现.webapi居然有自动生成文档的功能....真是看见了救星啊 ...
- 使用swagger在netcorewebapi项目中自动生成文档
一.背景 随着前后端分离模式大行其道,我们需要将后端接口撰写成文档提供给前端,前端可以查看我们的接口,并测试,提高我们的开发效率,减少无效的沟通.在此情况下,通过代码自动生成文档,这种需求应运而生,s ...
- 使用doctest代码测试和Sphinx自动生成文档
python代码测试并自动生成文档 Tips:两大工具:doctest--单元测试.Sphinx--自动生成文档 1.doctest doctest是python自带的一个模块.doctest有两种使 ...
- SpringBoot 集成Swagger2自动生成文档和导出成静态文件
目录 1. 简介 2. 集成Swagger2 2.1 导入Swagger库 2.2 配置Swagger基本信息 2.3 使用Swagger注解 2.4 文档效果图 3. 常用注解介绍 4. Swagg ...
- 【Sphinx】 为Python自动生成文档
sphinx 前言 Sphinx是一个可以用于Python的自动文档生成工具,可以自动的把docstring转换为文档,并支持多种输出格式包括html,latex,pdf等 开始 建一个存放文档的do ...
- xcode 自动添加注释,生成文档
一.自动生成注释代码 添加一个快捷键,生成 注释代码 ThisService 下载连接:http://wafflesoftware.net/thisservice/ ...
- 用doxygen自动生成文档
1. 添加符合doxygen解析规则的注释 (比如函数说明,函数参数/返回值说明) 用qt-creator可以在函数上方一行键入“/**”,然后直接回车,就可以自动生成默认的格式. 2. 安装doxy ...
随机推荐
- JSP标签 <fmt:formatDate>格式化日期
<fmt:formatDate>标签用于使用不同的方式格式化日期. <%@ page language="java" contentType="text ...
- mnist数据集tensorflow实现
TensorFlow——CNN实现MNIST手写体识别 2019年04月08日 21:46:19 星空Ice_ 阅读数 83 文章目录 TensorFlowCNN实现MNIST 1,数据集 2,回 ...
- 11 ~ express ~ 解决 cookie 中文报错的问题
使用cookies包需要注意:1,cookie中是不能有中文的,一旦有中文,就会报错2,cookie是通过 中间件的形式直接挂载到 req对象上的,那么cookies有的方法,req.cookies就 ...
- 8 ~ express ~ 基于数据库的验证
1,首先 在router/api.js 中引入数据库定义好的模型 /models/User.js var User = require('../models/User') //User返回的是一个构 ...
- SQL中将某个字段根据分隔符分割成两个字段
假设有表如下: 商品名称 耐克/DS001 安踏/AT002 阿迪达斯/AD009 使用SQL将[商品名称]字段按照分隔符‘/’进行分割后实现以下效果: 品牌 商品代码 耐克 DS001 安踏 AT0 ...
- 网络寻路(DFS)
Description X 国的一个网络使用若干条线路连接若干个节点.节点间的通信是双向的.某重要数据包,为了安全起见,必须恰好被转发两次到达目的地.该包可能在任意一个节点产生,我们需要知道该网络中一 ...
- python类(3)感悟
1.关于类属性attribute和实例(对象)特性property思考 为什么特性会出现,类属性不能完全替代它吗? 属性: python在为属性赋值时,只会搜索对象本身的__dict__,如果找不到对 ...
- QMainWindow的空间布局结构
简单讲一下Qt的QMainWindow的结构,Qt的顶级窗口有三种类型,首先是万恶之源(...应该说是大部分控件的父类...)的QWidget,然后是QMainWidget和QDialog,后面两者也 ...
- 用PyQt5来即时显示pandas Dataframe的数据,附qdarkstyle黑夜主题样式(美美哒的黑夜主题)
import sys from qdarkstyle import load_stylesheet_pyqt5 from PyQt5.QtWidgets import QApplication, QT ...
- 十五、Numpy-科学计算基础库
Numpy: NumPy(Numerical Python) 是科学计算基础库,提供大量科学计算相关功能,比如数据统计,随机数生成等.其提供最核心类型为多维数组类型(ndarray) ...