What is @storybook/react-docgen-typescript-plugin?
The @storybook/react-docgen-typescript-plugin is a plugin for Storybook, designed to enhance the documentation of React components written in TypeScript. It automatically generates prop tables and documentation for your components based on the TypeScript definitions. This helps in creating more informative and readable Storybook stories, making it easier for developers to understand the props and functionalities of the components.
What are @storybook/react-docgen-typescript-plugin's main functionalities?
Automatic Prop Documentation
This feature automatically generates documentation for the props of React components based on their TypeScript definitions. The configuration snippet above shows how to set up the plugin in the `.storybook/main.js` file, enabling automatic prop documentation in Storybook.
module.exports = {
stories: ['../src/**/*.stories.@(js|jsx|ts|tsx)'],
addons: [
'@storybook/addon-links',
'@storybook/addon-essentials',
{
name: '@storybook/preset-typescript',
options: {
reactDocgen: 'react-docgen-typescript',
reactDocgenTypescriptOptions: {
shouldExtractLiteralValuesFromEnum: true,
propFilter: (prop) => (prop.parent ? !/node_modules/.test(prop.parent.fileName) : true),
},
},
},
],
};
Other packages similar to @storybook/react-docgen-typescript-plugin
react-docgen-typescript-loader
Similar to @storybook/react-docgen-typescript-plugin, this package is a webpack loader that generates documentation for your React components based on TypeScript definitions. While both packages aim to enhance component documentation, react-docgen-typescript-loader works at the webpack level, requiring manual configuration in your webpack config, whereas @storybook/react-docgen-typescript-plugin is specifically designed to integrate with Storybook's ecosystem, offering a more seamless setup for Storybook users.
storybook-addon-react-docgen
This package also enhances Storybook with React component documentation, leveraging react-docgen under the hood. It differs from @storybook/react-docgen-typescript-plugin by not being specifically tied to TypeScript. It's more general-purpose, working with both JavaScript and TypeScript components. However, for projects heavily using TypeScript, @storybook/react-docgen-typescript-plugin might provide more detailed and accurate documentation due to its direct integration with TypeScript's type system.
react-docgen-typescript-plugin
A webpack plugin to inject react typescript docgen information
Install
npm install --save-dev react-docgen-typescript-plugin
yarn add -D react-docgen-typescript-plugin
Usage
NOTE: The TypeScript compiler options allowSyntheticDefaultImports
and esModuleInterop
will make
react-docgen-typescript-plugin
a lot harder! Turn them off for faster build times.
const ts = require('typescript');
const ReactDocgenTypescriptPlugin = require("react-docgen-typescript-plugin").default;
module.exports = {
plugins: [
new ReactDocgenTypescriptPlugin(),
new ReactDocgenTypescriptPlugin({ tsconfigPath: "./tsconfig.dev.json" }),
new ReactDocgenTypescriptPlugin({ compilerOptions: { jsx: ts.JsxEmit.Preserve } }),
],
};
Options
This plugins support all parser options from react-docgen-typescript and all of the following options
Option | Type | Description | Default |
---|
tsconfigPath | string | Specify the location of the tsconfig.json to use. | null |
compilerOptions | object | Specify compiler options. Cannot be used with tsconfigPath | null |
docgenCollectionName | string or null | Specify the docgen collection name to use. All docgen information will be collected into this global object. Set to null to disable. | STORYBOOK_REACT_CLASSES |
setDisplayName | boolean | Set the components' display name. If you want to set display names yourself or are using another plugin to do this, you should disable this option. | true |
typePropName | string | Specify the name of the property for docgen info prop type. | type |
exclude | glob[] | Glob patterns to ignore and not generate docgen information for. (Great for ignoring large icon libraries) | [] |
include | glob[] | Glob patterns to generate docgen information for | ['**/**.tsx'] |
Debugging
If you want to see how this plugins is including and excluding modules set the DEBUG
environment variable.
DEBUG=docgen:*
- All logsDEBUG=docgen:include
- Included modulesDEBUG=docgen:exclude
- Excluded modulesDEBUG=docgen:docs
- Generated docs
DEBUG=docgen:* npm run storybook
Another great way of debugging your generated docs is to use a debugger
statement in your component source file.
If you turn off source maps you will be able to see the code that this package generates.
Prior Art
Contributors ✨
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!