Releases: reactjs/react-docgen
Releases · reactjs/react-docgen
4.0.0
In this version we focused on allowing our internals to be more flexible when it comes to allowing different configurations for @babel/parser
. This will make it easier to introduce support for different javascript flavors (like TypeScript 🎉) in the future.
Thanks to @jquense for working on this changes.
BREAKING CHANGES
- Removed cli arguments
--legacy-decorators
and--decorators-before-export
. (#327)
As a replacement react-docgen will read your babel config and pickup the correct configuration from there. - Removed API options
legacyDecorators
anddecoratorsBeforeExport
. (#327)
This probably will only affect libraries or tools that integrate react-docgen and use the programmatic API. In most cases the automatic pickup of babel configuration files will already be enough to not make this a breaking change. With the newparserOptions
option you could still set this configuration, for example:
react-docgen.parse(code, null, null, {
- decoratorsBeforeExport: true
+ parserOptions: {
+ plugins: [
+ ["decorators", { decoratorsBeforeExport: true }],
+ ],
+ },
});
New Features
- Use local babel config if it exists (#320)
We now automatically check if a babel configuration already exists in your project and use it as configuration for the@babel/parser
we use. This was a necessary step as a lot of recent proposals in babel have configuration options, so we cannot simply activate everything. This change is not breaking unless your babel configuration is broken and does not enable all necessary features (which should throw already in your project).
If you are using react-docgen in the browser, ensure thatfs
,net
andmodule
are correctly mocked, as babel uses them. (see our website configuration) - New configuration option
fileName
(#320)
This is a new option which gets forwarded to babel in order to pick the correct configuration file. Library and tool authors are strongly recommended to set this option whenever possible. Not setting it might result in no or the wrong babel configuration being picked up. - New configuration option
cwd
(#320)
This is a new option which gets forwarded to babel in order to pick the correct configuration file. This option is usually autodetected by babel itself usingprocess.cwd()
. - Support forwardRef for all resolvers (#324)
- Support custom parser options in programmatic API (#327)
This allows you to supply your own@babel/parser
options through thereact-docgen
API with the newly added optionparserOptions
. See our README for more information.
3.0.0
Changes from rc.2
- Add
forwardRef
as a valid component definition (#311) - Resolve flow
$Keys
to union when typeParameter is anObjectTypeAnnotation
(#290) - Attempt to support system-components (#292)
- Add support for
PropTypes.exact
- resolve
Object.values()
inPropType.oneOf()
(#318)
Big Changes from 2.x
- Drop support for node 4. Only node 6 and newer are supported
- Switched the internal parser from
babylon@5
to@babel/parser@7
. This should not break anything, but will support a lot more newer javascript syntax features as well as newer flow syntaxes. - react-docgen now parses only the new decorators proposal syntax and not the old one anymore by default. You can switch back to the legacy decorators proposal with the cli flag
--legacy-decorators
or the programmatic options{ legacyDecorators: true }
passed as 4th parameter to ReactDocgen.parse(). - The types of method params and return (parsed from JSdoc) are now the same as the flow types.
3.0.0-rc.2
New Features
- Support flow NullLiteralTypeAnnotation node type (#299)
- Support JSXFragment (#304)
- Add option to switch between the two decorator modes for babel
- Allow descriptions for oneOfType values (#301)
Performance
- Ensure visited types memory is empty after flow type detection is done
Bug Fixes
- Ignore assignment to non-identifier/literals (#305)
- Ensure null is never put into visited types memory
Internal
- Update to babel 7
- Update to latest recast version
3.0.0-rc.1
3.0.0-rc.0
Breaking Change
- react-docgen now parses only the new decorators proposal syntax and not the old one anymore by default. You can switch back to the legacy decorators proposal with the cli flag
--legacy-decorators
or the programmatic options{ legacyDecorators: true }
passed as 4th parameter toReactDocgen.parse()
. - Drop support for node <6
New Features
- Parse information about the (old) react context API (#130, #260)
- Adding
@extends React.Component
support to mark classes which do not extend fromReact.Component
as valid react components (#269) - Support type cast expression when detecting components (#279)
Bug Fixes
- Fix typo in one error message (Propery -> Property) (#257)
- Fix handling of exported classes without id (#273)
- Remove renamed SpreadProperty checks
- Extract display name correctly even if components are wrapped (#277)
- Resolve value to a proper node instead of an array, which fixes some recast exceptions (#278)
- Correctly unwrap utility types when resolving type spreads (#280)
- Correctly read descriptions of inner types in arrayOf/objectOf (#281)
- Correctly read descriptions of local spread objects (#282)
Internal
2.21.0
v3.0.0-beta12
New
Support for "unwrapping" $Exact<...>
and $ReadOnly<...>
type annotations. Example:
type Props = $ReadOnly<{
foo: string,
}>;
v3.0.0-beta11
v2.20.1
v3.0.0-beta9
(merged changes released in v2.20.0
)
New
See v2.20.0
.
-
Update babylon to latest beta. This allows a lot new syntax proposal which were added to babylon (see babylon changes)
-
Enable more babylon plugins (#220)
Enables the following new plugins in babylon:
- classPrivateProperties
- classPrivateMethods
- numericSeparator
- optionalChaining
- importMeta
- bigInt
- optionalCatchBinding
- throwExpressions
- pipelineOperator
- nullishCoalescingOperator
You can install this version via npm install react-docgen@next
.