VitePress-Plugin-props2table
install
bash
pnpm i vitepress-plugin-props2table
usage
1、add plugin in vite.config.js
typescript
import { props2table } from 'vitepress-plugin-props2table'
export default defineConfig({
plugins: [
props2table(),
],
})
2、add command in markdown
markdown
<!-- /path.ts is you file path -->
@props2table(/path.ts)
📢: Path can only be an absolute path
3、and you will see a table
PropsAllType
参数 | 说明 | 类型 | 是否必填 | 可选值 | 默认值 |
---|---|---|---|---|---|
a | 描述a | string | true | 默认值是1 | |
b | 描述b 是一个枚举值 | a | b | c | true | 默认值是a | |
c | 描述c是一个外部引用的类型 | Props2 | true | ||
e | 描述e 是一个数组 | string[] | true | ||
f | Record<string, string> | true |
自定义表格
1、 需要增加一个id以对应配置的id id可以是任意值
🐷: id不填为
default
如果想要多个表格使用同一个配置,id相同即可 或者重写default配置
markdown
@props2table(./path.ts, 'myid1')
2、然后在vite.config.js
中配置
typescript
import { props2table } from 'vitepress-plugin-props2table'
export default defineConfig({
plugins: [
props2table({
// id对应上面的填写的id
myid1: {
title: '自定义表格标题',
columns: [
{
title: '自定义header标题',
dataKey: 'name',
align: 'center',
},
{
title: '自定义描述--',
dataKey: 'comments.description',
align: 'center',
},
{
title: '支持版本',
dataKey: (data) => {
return `${data.comments.version || ''}`
},
},
],
}
}),
],
})
3、最后你会看到一个自定义的表格
自定义表格标题
自定义header标题 | 自定义描述-- | 支持版本 |
---|---|---|
a | 描述a | |
b | 描述b 是一个枚举值 | |
c | 描述c是一个外部引用的类型 | |
e | 描述e 是一个数组 | 1.0.0 |
f |
只解析某个返回
有些情况下 你不想到把整个导出都解析出来 因此你可以指定解析某个返回
markdown
<!-- 只解析./path.ts文件下 interface Props 的返回 -->
@props2table(./path.ts, 'c-interface', 'InterfaceDefinition')
ParseInterfaceTypes
name | 描述 | 类型 | 是否必填 |
---|---|---|---|
name | 属性名 | string | 是 |
type | 属性类型 | string | 是 |
required | 是否必填 | boolean | 是 |
comments | 所有注释都将解析到这里 | Record<CommentType | string, string> | 是 |
高级
自定义解析器
目前默认只解析typescript文件
有些情况下 你可能需要解析tsx 或者其他文件(前提是babel支持)
你可以传入第二个参数 使其支持解析其他文件类型
typescript
props2table({}, ['jsx'])
获取解析结果
有些情况下 你可能不想要解析为表格 或者你想在其他地方使用解析结果
你可以直接使用 parseInterface 解析返回即可
🐷: 可在任意地方使用 不再是通过插件的方式在vite.config.ts
中使用
typescript
import { parseInterface } from 'vitepress-plugin-props2table'
parseInterface('you code')