react-docgen

A CLI and library to extract information from React component files for documentation generation purposes.

MIT License

Downloads
19.6M
Stars
3.6K
Committers
89

Bot releases are hidden (Show)

react-docgen - 4.0.1

Published by danez over 5 years ago

Bug Fixes

  • Support elementType in proptypes correctly (#330)

Thanks to @eps1lon for fixing it.

react-docgen - 4.0.0

Published by danez over 5 years ago

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 and decoratorsBeforeExport. (#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 new parserOptions 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 that fs, net and module 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 using process.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 the react-docgen API with the newly added option parserOptions. See our README for more information.
react-docgen - 3.0.0

Published by danez over 5 years ago

Changes from rc.2

  • Add forwardRef as a valid component definition (#311)
  • Resolve flow $Keys to union when typeParameter is an ObjectTypeAnnotation (#290)
  • Attempt to support system-components (#292)
  • Add support for PropTypes.exact
  • resolve Object.values() in PropType.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.
react-docgen - 3.0.0-rc.2

Published by danez almost 6 years ago

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
react-docgen - 3.0.0-rc.1

Published by danez almost 6 years ago

Breaking Change

  • The types of method params and return are now the same as the flow types.

New Features

  • Add modifier for getters and setters (#287)

Bug Fixes

  • Output qualified type identifiers correctly
  • Correctly and recursively parse jsdoc types (#286)
react-docgen - 3.0.0-rc.0

Published by danez over 6 years ago

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 to ReactDocgen.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 from React.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

  • Migrate babylon to @babel/parser (#272)
  • Use prettier (#274)
react-docgen - 2.21.0

Published by danez over 6 years ago

New Features

  • Also output information about (old) react context usages (#260, #130)
  • Adding @extends React.Component support to isReactComponentClass (#269)

BugFixes

  • Fix handling of exported classes without id (#273)
  • typo: Propery -> Property (#257)
react-docgen -

Published by fkling over 6 years ago

New

Support for "unwrapping" $Exact<...> and $ReadOnly<...> type annotations. Example:

type Props = $ReadOnly<{
  foo: string,
}>;
react-docgen - v3.0.0-beta11

Published by danez over 6 years ago

BugFixes

  • Handle Logical and Conditional Expressions (#245)
  • Added post-processing step for documentation (#227)
  • Handle array shorthand notation (#251)
  • Fix cycles in flow type detection (#252)
  • Get displayName from variable if nothing else found
react-docgen - v2.20.1

Published by danez over 6 years ago

BugFixes

  • Handle Logical and Conditional Expressions (#245)
  • Added post-processing step for documentation (#227)
  • Handle array shorthand notation (#251)
  • Fix cycles in flow type detection (#252)
  • Get displayName from variable if nothing else found
react-docgen - v3.0.0-beta9

Published by danez almost 7 years ago

(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.

react-docgen - v2.20.0

Published by danez almost 7 years ago

New

  • Add support for typeof types and React.* types (#224)

    Adds support for all the types described in the react flow docs

  • Resolve flow $Keys<> to union type (#225)

    const CONTENTS = {
      'apple': '🍎',
      'banana': '🍌',
    };
    type Props = {
      fruit: $Keys<typeof CONTENTS>,
    };
    
react-docgen -

Published by fkling about 7 years ago

(cherry picked changes released in v2.19.0)

New

See v2.19.0.

Fixed

  • See v2.19.0.

  • Flow: Function type definitions without parameter names are now supported. For example:

    type Props = {
      callback: (string) => void,
    }
    

    In such a case the parameter name will simply be empty. See the commit ( #218 ) for an example of the output. Thank you @odinuge!

Other


You can install this version via npm install react-docgen@next.

react-docgen -

Published by fkling about 7 years ago

New

  • The names of class declarations and function declarations are now used as displayNames (3f22b3c49f4056ad725bec8d9908cc1027bf45dc).

  • In classes, static get propTypes(){} is now inspected for propTypes. I.e. instead of

    class MyComponent extends React.Component {}
    
    MyComponent.propTypes = {
      disabled: PropTypes.boolean,
    };
    

    you can now write

    class MyComponent extends React.Component {
      static get propTypes() {
        return {
          disabled: PropTypes.boolean,
        };
      }
    }
    

    (23aa0feeff512ea841907e75598798de65bedd4a)

Other

  • resolveToModule also resolvesJSXIdentifiers now (2c6e55aa838c1cb9a6755711a17ca4f108cbdf13)
react-docgen - v3.0.0-beta7

Published by danez about 7 years ago

(cherry picked changes released in v2.18.0)

New

See v2.18.0.

Fixed

See v2.18.0.

Other

See v2.18.0.

  • Upgraded babylon to v7.0.0-beta20.

You can install this version via npm install react-docgen@next.

react-docgen - v2.18.0

Published by danez about 7 years ago

New

  • Add support for flow >=0.53 and the new react definitions (#209).
  • Resolve Object.keys in PropType.oneOf() (#211).
    For example:
    Component.propTypes = { foo: PropTypes.oneOf(Object.keys({ a: 1, b: 2 }))};
    // react-docgen will now correctly extract the type of foo being "a" or "b"
    
    
react-docgen -

Published by fkling about 7 years ago

(cherry picked changes released in v2.17.0)

New

See v2.17.0.

Fixed

See v2.17.0.

Other

See v2.17.0.

  • Upgraded babylon to v7.0.0-beta17.

You can install this version via npm install react-docgen@next.

react-docgen -

Published by fkling about 7 years ago

New

  • Classes that define a render public class field are now considered React components. For example:

    class Component extends SomeBaseComponent {
      render = someFunction;
    }
    

    See #193 and fe55485. Thank you @birjolaxew!

  • Functions assigned to public class fields are now considered as methods. I.e. both function in the following example will be picked up by react-docgen:

    class Component extends React.Component {
      method1() {}
      method2 = () => {
    
      };
    }
    

    See 1ff84b7 and #182.

Fixed

  • Using array destructuring in class method parameters doesn't throw an error anymore. ( #197 )

Other

  • Upgraded dependencies, especially recast ( 760c426 ).
react-docgen -

Published by fkling over 7 years ago

(cherry picked changes from v2.16.0)

New

  • -e, --exclude now accepts a regular expression to filter out files by name: -e /.*-test\.js/ The argument will only be treated as a regular expression if the parameter is only passed once ( #164).

You can install this version via npm install react-docgen@next.

react-docgen -

Published by fkling over 7 years ago

New

  • -e, --exclude now accepts a regular expression to filter out files by name: -e /.*-test\.js/ The argument will only be treated as a regular expression if the parameter is only passed once ( #164).

Thank you @wallaroo for your contribution!