React 經過註釋自動生成文檔

最近找了一些文檔的生成工具,結果發現了這個 React Styleguidist 能夠經過註釋,自動生成對應的文檔,對於 react 庫來講十分方便

安裝

npm i -D react-styleguidist

// or

yarn add -D react-styleguidist

typescript 支持

npm i -D react-docgen-typescript

配置

此次的例子是使用 cra 來建立的項目,還有其餘項目也是支持的 點擊參考javascript

在根文件夾下建立 styleguide.config.js 文件
能夠使用以下的配置html

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: "文檔名" // 文檔名
}

更加具體的配置項能夠點此參考java

編寫註釋

例子 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;

添加使用用例:react

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

圖例:

1578477142277.jpg

例子 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;

圖例:

1578477172354.jpg

結果

使用以下命令,能夠建立一個 web 服務,在線修改文檔:webpack

styleguidist server

使用以下命令,能夠將文檔項目打包git

styleguidist build

若是庫正好在 GitHub 上面,但是開通 GitHub Pages 功能,將文檔包提交進 GitHub;
本例結果頁面查看:github

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

結語

當你使用 react 開發而又想要寫文檔的使用, React Styleguidist 絕對是最好的選擇之一
而若是你的庫在 GitHub 上,那麼就可以當即生成你的文檔站點typescript

相關文章
相關標籤/搜索