Giter Site home page Giter Site logo

biko2 / react-docgen-typescript Goto Github PK

View Code? Open in Web Editor NEW

This project forked from styleguidist/react-docgen-typescript

0.0 7.0 0.0 476 KB

A simple parser for react properties defined in typescript instead of propTypes.

License: MIT License

TypeScript 100.00%

react-docgen-typescript's Introduction

react-docgen-typescript

Build Status

A simple parser for React properties defined in TypeScript instead of propTypes.

It can be used with React Styleguidist.

Installation

npm install --save-dev react-docgen-typescript

React Styleguidist integration

Include following line in your styleguide.config.js:

propsParser: require('react-docgen-typescript').withDefaultConfig([parserOptions]).parse

or if you want to use custom tsconfig file

propsParser: require('react-docgen-typescript').withCustomConfig('./tsconfig.json', [parserOptions]).parse

parserOptions

  • propFilter:

    {
      skipPropsWithName?: string[] | string;
      skipPropsWithoutDoc?: boolean;
    }

    or

    (props: PropItem, component: Component) => boolean

    Note: children without a doc comment will not be documented.

Example

In the example folder you can see React Styleguidist integration.

The component Column.tsx

import * as React from 'react';
import { Component } from 'react';

/**
 * Column properties.
 */
export interface IColumnProps {
    /** prop1 description */
    prop1?: string;
    /** prop2 description */
    prop2: number;
    /**
     * prop3 description
     */
    prop3: () => void;
    /** prop4 description */
    prop4: 'option1' | 'option2' | 'option3';
}

/**
 * Form column.
 */
export class Column extends Component<IColumnProps, {}> {
    render() {
        return <div>Test</div>;
    }
}

Will generate the following stylesheet:

Stylesheet example

The functional component Grid.tsx

import * as React from 'react';

/**
 * Grid properties.
 */
export interface IGridProps {
    /** prop1 description */
    prop1?: string;
    /** prop2 description */
    prop2: number;
    /**
     * prop3 description
     */
    prop3: () => void;
    /** Working grid description */
    prop4: 'option1' | 'option2' | 'option3';
}

/**
 * Form Grid.
 */
export const Grid = (props: IGridProps) => {
    const smaller = () => {return;};
    return <div>Grid</div>;
};

Will generate the following stylesheet:

Stylesheet example

Contributions

The typescript is pretty complex and there are many different way how to define components and their props so it's realy hard to support all diferent use cases. That means only one thing, contributions are highly welcome. Just keep in mind that each PR should also include tests for the part it's fixing.

Thanks to contributors

@basarat Basarat Ali Syed

@brettjurgens Brett Jurgens - adding support for default props

@diegolanda Diego - support for different kinds of components

@dotcs Fabian Mueller - introduced parserOptions for skipping undocumented properties

@eps1lon Sebastian Silbermann

@Havret Krzysztof Havret

@JakeSidSmith Jake

@JocD Jacques Dukes - complete support for functional components and much more

@jrwebdev James Ravenscroft

@RoystonS Royston Shufflebotham - complete parser rewrite that use typescript parser in much better way and overcome many issues of previous implementation

@sapegin Artem Sapegin - fix for compatibility with react-styleguidist v5

@skeate Jonathan Skeate

Thanks to others

The integration with React Styleguidist wouldn't be possible without Vyacheslav Slinko pull request #118 at React Styleguidist.

react-docgen-typescript's People

Contributors

pvasek avatar jocd avatar dotcs avatar sapegin avatar diegolanda avatar skeate avatar royston-shufflebotham-i2 avatar havret avatar asilgag avatar basarat avatar brettjurgens avatar jakesidsmith avatar eps1lon avatar uditalias avatar jrwebdev avatar

Watchers

Rubén Bernárdez avatar James Cloos avatar David Gil avatar Juanjo avatar David Gallego Varela avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.