react prop-types plugin for structured-types
npm install @structured-types/prop-types-plugin- Overview
- Getting started
- - 1. Installation
- 2. Your API source file (Component.tsx):
- 3. Your documentation extraction
- 4. The result
- Configuration
- Enable the children props.
- ParsePlugin
structured-types plugin to extract react prop-types specific properties. If you are using typescript props for your react components, please see the react plugin.
``bash`
$ npm install @structured-types/prop-types-plugin --save-dev
`js
import React from 'react';
import PropTypes from 'prop-types';
/**
* MyComponent special component
*/
export const MyComponent = ({ stringProp }) =>
MyComponent.propTypes = {
/* stringProp description /
stringProp: PropTypes.string,
/* numberProp description /
numberProp: PropTypes.number.isRequired,
};
MyComponent.defaultProps = {
stringProp: 'test',
};
`
`ts
import { parseFiles } from '@structured-types/api';
import propTypesPlugin from '@structured-types/prop-types-plugin';
//optional you can also use react plugin for any typescript react props
import reactPlugin from '@structured-types/react-plugin';
const docs = parseFiles(['../src/components/Component.tsx'], {
plugins: [propTypesPlugin, reactPlugin],
});
`
`json`
{
"MyComponent": {
"kind": 11,
"extension": "react-prop-types",
"properties": [
{
"name": "stringProp",
"kind": 1,
"optional": true,
"description": "stringProp description",
"value": "test"
},
{
"name": "numberProp",
"kind": 2,
"description": "numberProp description"
}
],
"description": "MyComponent special component",
"name": "MyComponent"
}
}
The react-prop-types typescript uses the default configurations from the react plugin, and you can also add or modify some of the other parsing options that will be specific only for the found react components. For other typescript/jsdoc types, the global options passed to parseFiles will still apply.
props.By default, the plugin removes the children property that is part of most react components, here is an example of how to re-enable the children properties by disabling the default filter:
import { parseFiles } from '@structured-types/api';
import propTypesPlugin from '@structured-types/prop-types-plugin';
const docs = parseFiles(['../src/components/Component.tsx'], {
plugins: [{ ...propTypesPlugin, filter: undefined }],
});
type
Plugin type - provides the plugin name and the type resolver
_defined in @structured-types/api/packages/api/src/ts-utils.ts_
properties
| Name | Type | Parent | Default | Description |
| ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| tsOptions | ts.CompilerOptions | DocsOptions | | |internalTypes
| | Record<string, PropKind> | ParseOptions | | internal types - libs by default includes classes such as String , Function ... |extract
| | string\[] | ParseOptions | | list of export names to be extracted. by default all exports are extracted |filter
| | function (prop\kind: name: stringalias: stringparentname\: stringloc: SourceLocationlocfilePath: stringloc: SourcePositionsoptional: booleanreadonly: booleanabstract: booleanasync: booleanvisibility: "private" \| "protected" \| "public"static: booleantype: stringextension: stringdescription: stringfires: string\[]see: string\[]examples: JSDocExample\[]tags: JSDocPropTag\[]summary: stringdeprecated: string \| trueignore: booleanusage: type\[]) => boolean | ParseOptions | | filter properties function. By default filter out all props with ignore === true |maxDepth
| | number | ParseOptions | 6 | max depth for extracting child props. |collectHelpers
| | boolean | ParseOptions | | whether to save "helper" props that are used by the main parsed props if set to false will result in a smaller result set |collectGenerics
| | boolean | ParseOptions | true | whether to collect generics parameters |collectParameters
| | boolean`