@domclick/declarations-js-library

Generate TypeScript declarations for your components from PropTypes

Usage no npm install needed!

<script type="module">
  import domclickDeclarationsJsLibrary from 'https://cdn.skypack.dev/@domclick/declarations-js-library';
</script>

README

declarations-js-library библиотека

declarations-js-library is a library that can scan propsType in you file and create the list of declarations TS. It's useful for packages written on js.

Installation

npm i --save--dev @domclick/declarations-js-library

Properties

Properties Required Type Default Description
libName Yes string '' Library name
path No string 'src/index.js' Path to js file or files 'src/*/.js'
destinationPath No string 'dist/index.d.ts' Destination path for index.d.ts file
declarationList No Array [] Components Name to be included in index.d.ts

Usage

// file build.js 

 const { propsTypeToTS } = require('@clic-core/declarations-js-library');

 propsTypeToTS({
  libName: 'libName',
 });

Run the command node build.js to create the index.d.ts file.

Example

Input

 const envOptions = ['test', 'testing'];

 export const MyComponent = (props) => (<div>MyComponent</div>);

 MyComponent.propTypes = {
  env: PropTypes.oneOf(envOptions).isRequired,
  isOpen: PropTypes.bool,
  onClick: PropTypes.func,
  string: PropTypes.string,
  number: PropTypes.number,
  array: PropTypes.array.isRequired,
  obj: PropTypes.shape({ name3: PropTypes.instanceOf(Array) }).isRequired,
 };

Output

/* libName: test */

 import React from "react";

 type MyComponentEnvEnum = "test" | "testing";

 interface MyComponentProps {
  env: MyComponentEnvEnum;
  isOpen?: boolean;
  onClick?: Function;
  string?: string;
  number?: number;
  array: Array<unknown>;
  obj: unknown;
 }

 export const MyComponent: React.ComponentClass<MyComponentProps>;

Author

This project was inspired by that project

License

Copyright Ⓒ 2021 "Sberbank Real Estate Center" Limited Liability Company.

MIT License