docgen 可帮助你生成代码的公共 API。给定一个入口文件,它会以人类可读的格式输出 ES6 export 语句及其对应的 JSDoc 注释。它还通过 TypeScript Babel 插件支持 TypeScript。
一些特性:
- 如果 export 语句不包含任何 JSDoc,它将向上查找至声明处。
- 它可以解析相对依赖项,无论是文件还是目录。例如,
import default from './dependency'将找到dependency.js或dependency/index.js - 对于 TypeScript 支持,所有类型必须显式标注,因为 TypeScript Babel 插件无法消费推断出的类型(毕竟它不运行 TS 编译器——它只是解析 TypeScript)。例如,如果要由
docgen记录文档,则所有函数返回类型都必须显式标注。
安装
安装模块
npm install @wordpress/docgen --save-dev
注意:此软件包需要具有长期支持状态(检查Active LTS 或 Maintenance LTS 版本)的 Node.js 版本。它与旧版本不兼容。
用法
npm exec --no -- docgen <entry-point.js>
此命令将生成一个名为 entry-point-api.md 的文件,其中包含所有导出及其 JSDoc 注释。
CLI 选项
- –formatter
(String):自定义格式化程序的路径,用于控制输出文件的内容。它应该是一个 CommonJS 模块,导出一个接受以下输入作为参数的函数:- rootDir
(String):docgen 看到的当前工作目录。 - docPath
(String):要生成的输出文档路径。 - symbols
(Array):找到的符号。
- rootDir
- –ignore
(RegExp):用于忽略名称与其匹配的符号的正则表达式。 - –output
(String):将包含 API 文档的输出文件。 - –to-section
(String):将生成的文档追加到 Markdown 输出的此部分中。供默认 Markdown 格式化程序使用。依赖于--output,如果存在自定义--formatter,则绕过它。 - –to-token:在 Markdown 输出的开始和结束令牌内嵌入生成的文档。供默认 Markdown 格式化程序使用。依赖于
--output,如果存在自定义--formatter,则绕过它。- 开始令牌:
<!-- START TOKEN(Autogenerated API docs) --> - 结束令牌:
<!-- END TOKEN(Autogenerated API docs) -->
- 开始令牌:
- –use-token
(String):此选项允许你自定义令牌之间的字符串。例如,--use-token my-api将查找开始令牌<!-- START TOKEN(my-api) -->和结束令牌<!-- END TOKEN(my-api) -->。依赖于--to-token。 - –debug:以调试模式运行,这会输出一些对调试有用的中间文件。
Babel 配置
@wordpress/docgen 遵循默认的项目范围的 Babel 配置。像 Babel 一样,它将在项目根目录中自动搜索 babel.config.json 文件或等效文件(使用支持的扩展名)。
如果没有它,@wordpress/docgen 将以默认选项运行。换句话说,它无法解析 JSX 或其他高级语法。
示例
默认导出
入口文件 index.js:
/**
* Adds two numbers.
*
* @param {number} term1 First number.
* @param {number} term2 Second number.
* @return {number} The result of adding the two numbers.
*/
export default function addition( term1, term2 ) {
// Implementation would go here.
}
npm exec --no -- docgen index.js 的输出将是 index-api.js:
# API
## default
[example.js#L8-L10](example.js#L8-L10)
Adds two numbers.
**Parameters**
- **term1** `number`: First number.
- **term2** `number`: Second number.
**Returns**
`number` The result of adding the two numbers.
命名导出
入口文件 index.js:
/**
* Adds two numbers.
*
* @param {number} term1 First number.
* @param {number} term2 Second number.
* @return {number} The result of adding the two numbers.
*/
function addition( term1, term2 ) {
return term1 + term2;
}
/**
* Adds two numbers.
*
* @deprecated Use `addition` instead.
*
* @param {number} term1 First number.
* @param {number} term2 Second number.
* @return {number} The result of adding the two numbers.
*/
function count( term1, term2 ) {
return term1 + term2;
}
export { count, addition };
npm exec --no -- docgen index.js 的输出将是 index-api.js:
# API
## addition
[example.js#L25-L25](example.js#L25-L25)
Adds two numbers.
**Parameters**
- **term1** `number`: First number.
- **term2** `number`: Second number.
**Returns**
`number` The result of adding the two numbers.
## count
[example.js#L25-L25](example.js#L25-L25)
> **Deprecated** Use `addition` instead.
Adds two numbers.
**Parameters**
- **term1** `number`: First number.
- **term2** `number`: Second number.
**Returns**
`number` The result of adding the two numbers.
命名空间导出
假设入口文件为 index.js:
export * from './count';
其中 ./count/index.js 内容为:
/**
* Subtracts two numbers.
*
* @example
*
* ```js
* const result = subtraction( 5, 2 );
* console.log( result ); // Will log 3
* ```
*
* @param {number} term1 First number.
* @param {number} term2 Second number.
* @return {number} The result of subtracting the two numbers.
*/
export function subtraction( term1, term2 ) {
return term1 - term2;
}
/**
* Adds two numbers.
*
* @example
*
* ```js
* const result = addition( 5, 2 );
* console.log( result ); // Will log 7
* ```
*
* @param {number} term1 First number.
* @param {number} term2 Second number.
* @return {number} The result of adding the two numbers.
*/
export function addition( term1, term2 ) {
// Implementation would go here.
return term1 - term2;
}
npm exec --no -- docgen index.js 的输出将是 index-api.js:
# API
## addition
[example-module.js#L1-L1](example-module.js#L1-L1)
Adds two numbers.
**Usage**
```js
const result = addition( 5, 2 );
console.log( result ); // Will log 7
```
**Parameters**
- **term1** `number`: First number.
- **term2** `number`: Second number.
**Returns**
`number` The result of adding the two numbers.
## subtraction
[example-module.js#L1-L1](example-module.js#L1-L1)
Subtracts two numbers.
**Usage**
```js
const result = subtraction( 5, 2 );
console.log( result ); // Will log 3
```
**Parameters**
- **term1** `number`: First number.
- **term2** `number`: Second number.
**Returns**
`number` The result of subtracting the two numbers.
TypeScript 支持
入口文件 index.ts:
/**
* Adds two numbers.
*
* @param term1 First number.
* @param term2 Second number.
* @return The result of adding the two numbers.
*/
export default function addition( term1: number, term2: number ): number {
// Implementation would go here.
}
npm exec --no -- docgen index.ts 的输出将是 index-api.js:
# API
## default
[example.js#L8-L10](example.js#L8-L10)
Adds two numbers.
**Parameters**
- **term1** `number`: First number.
- **term2** `number`: Second number.
**Returns**
`number` The result of adding the two numbers.
为此软件包做贡献
这是 Gutenberg 项目的一部分独立软件包。该项目组织为一个 monorepo。它由多个自包含的软件包组成,每个软件包都有特定的用途。此 monorepo 中的软件包发布到 npm,并被 WordPress 以及其他软件项目使用。
要了解有关为此软件包或整个 Gutenberg 做出贡献的更多信息,请阅读项目的主贡献者指南。