最近找了一些文檔的生成工具,結果發現了這個
React Styleguidist
能夠經過註釋,自動生成對應的文檔,對於 react 庫來講十分方便
npm i -D react-styleguidist // or yarn add -D react-styleguidist
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
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"/>
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 服務,在線修改文檔:webpack
styleguidist server
使用以下命令,能夠將文檔項目打包git
styleguidist build
若是庫正好在 GitHub 上面,但是開通 GitHub Pages
功能,將文檔包提交進 GitHub;
本例結果頁面查看:github
https://grewer.github.io/styleguidist-boilerplate/styleguide/web
當你使用 react 開發而又想要寫文檔的使用, React Styleguidist
絕對是最好的選擇之一
而若是你的庫在 GitHub 上,那麼就可以當即生成你的文檔站點typescript