天天看點

使用typeDoc快速生成開發文檔

部門A采用ReactNative開發,維護RN元件庫,部門B采用原生開發。為了應對業務的快速疊代,B部門的學生也需要通路RN。是以就有了以下問題。

B 部門同學想要知道:

  • A 元件庫支援什麼功能
  • A 元件庫的元件怎麼使用

A 部門元件庫存在的問題:

  • 沒有文檔說明(曾經有,疊代太快,寫文檔太麻煩,久而久之就過時了)
  • 注釋較少,時間久了,原開發同學都離職了,想要搞清楚元件支援的功能得扒源碼看

A需要經常支援B,這很麻煩,不想花太多時間寫文檔。為了解決這個問題,我參考了原生開發使用的Javadoc工具,最後找到了這個-typedoc。使用後體驗還可以,比每次選擇源代碼都友善。寫一篇文章來分享這個工具。

TypeDoc 将 TypeScript 源代碼中的注釋轉換為呈現的 HTML 文檔或 JSON 模型。它是可擴充的,支援多種配置。

初始化工程

建立一個新的 TS React 應用來示範功能

npm install -g create-react-app
create-react-app type-doc-demo --template typescript
      

安裝typeDoc

npm install typedoc --save-dev      

工程說明

元件工程的目錄結構如下所示

.
├── components
│   ├── Card
│   │   └── index.tsx
│   ├── Filter
│   │   └── index.tsx
│   └── index.tsx
├── demo
│   └── Filter.tsx
├── App.tsx
...
      

components/index.tsx導出所有元件,demo目錄包含示例代碼。

// components/index.tsx
export { Card } from "./Card";
export type { CardProps } from "./Card";
export { Filter } from "./Filter";
export type { FilterProps } from "./Filter";      

基礎功能

在項目根目錄建立typedoc.js檔案,指定入口檔案和輸出目錄

// typedoc.js
module.exports = {
  entryPoints: ["./src/components/index.tsx"],
  out: "doc",
  name: "元件庫",
};
      

package.json添加腳本打包看看效果

// package.json
...
 "scripts": {
    "doc": "typedoc --tsconfig tsconfig.json --options typedoc.js"
  },
...
      

執行 npm run doc,效果如下,預設會将README.md内容放在首頁

使用typeDoc快速生成開發文檔

MarkDown文法

typeDoc将通過導出内容的注釋生成文檔,注釋支援MarkDown文法,是以可以将注釋這麼寫

插入表格

export type FilterProps = {
    /**
   * 彈窗類型
   *
   * |drop|fullscreen|
   * |:---:|:---:|
   * |下拉| 全屏|
   *  */
  modalMode?: "dorp" | "fullscreen";
};
      

插入示例代碼

export type FilterProps = {
  /**
   * 配置
   * ```
   * {
   *        base_filter: {
   *          checkBox: {
   *            columns: 4,
   *          },
   *        },
   *      }
   *```
   */
  config?: object;
};
      

生成文檔效果

使用typeDoc快速生成開發文檔

插入自定義資源

typedoc.js增加如下配置

// typedoc.js
module.exports = {
  ...
  media: ["./demo-images"],
  includes: ["./src/demo"],
};      
  • includes: 包含檔案的目錄,這些檔案可以[[include:file.md]]在文檔注釋中注入到生成的文檔中。
  • media:指定将複制到輸出檔案的媒體目錄。媒體可以media://file.jpg在文檔注釋中連結到

添加上述配置後,在注釋中就可以通過如下方式通路對應資源了

/**
 * # 篩選器
 * ## 示例圖
 * <img src="media://Filter.jpg"  width="50%" />
 *
 * @see [資料格式說明文檔](https://www.baidu.com)
 *
 * ## 代碼示例
 * ### 使用
 * ```
 * [[include:Filter.tsx]]
 * ```
 **/
export const Filter: React.FC<FilterProps> = () => {
  ...
};      

生成文檔效果如下

使用typeDoc快速生成開發文檔

綜上,便以較小的工作量生成了一個簡單的開發文檔,提供了代碼示例、功能示例圖、屬性說明,如果隻供内部使用的話還比較友善。

其他配置

配置檔案

可以在typedoc.js檔案中填下如下配置

module.exports = {
  excludePrivate: true,  // 導出不包含private聲明内容
  excludeProtected: true, // 導出不包含protected聲明内容
  // 将包版本添加到項目名稱中。在這種情況下,如果項目是根據 1.2.3 版本`package.json`,這将生成名為“名稱 - v1.2.3”的文檔
  includeVersion: true, 
};

      

注釋标簽

  • @ignore:文檔忽略該子產品
  • @category:将該内容分組,同标簽會劃分一起
使用typeDoc快速生成開發文檔

繼續閱讀