@structured-types/prop-types-plugin v3.46.12
Table of contents
Overview
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.
Getting started
1. Installation
$ npm install @structured-types/prop-types-plugin --save-dev
2. Your API source file (Component.tsx):
import React from 'react';
import PropTypes from 'prop-types';
/**
* MyComponent special component
*/
export const MyComponent = ({ stringProp }) => <div>{stringProp}</div>;
MyComponent.propTypes = {
/** stringProp description */
stringProp: PropTypes.string,
/** numberProp description */
numberProp: PropTypes.number.isRequired,
};
MyComponent.defaultProps = {
stringProp: 'test',
};
3. Your documentation extraction
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],
});
4. The result
{
"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"
}
}
Configuration
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.
Enable the children
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 }],
});
ParsePlugin
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 : string alias : string parent name *: string loc : SourceLocationloc filePath : string loc : SourcePositionsoptional : boolean readonly : boolean abstract : boolean async : boolean visibility : "private" | "protected" | "public" static : boolean type : string extension : string description : string fires : string []see : string []examples : JSDocExample []tags : JSDocPropTag []summary : string deprecated : string | true ignore : boolean usage : 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 |
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago