code-gen-library v1.0.9
Code Gen Library
Stop worrying about the small things. A quick and opinionated way of generating code for your React projects š
Installation
npm install --save-dev code-gen-libraryUsage
npx generateor if installed globally
generateOnce executed, The following message should appear
? [PLOP] Please choose a generator. (Use arrow keys)
⯠Component - Generate a React component āļø
Util - Generate a util function š Default Options
1. React Components āļø
The CLI will ask you for the following information
| Command | Description | Default value |
|---|---|---|
| Component name? | The name of your React component | |
| Do you want a separate file for styles? | If you want your styles to live outside the main component | ā |
| Do you want a separate file for models | If you want your models to live outside the component of the folder | ā |
Example
If we choose the component name to be input text and everything else goes to default we end up with.
ā ++ /path/to/your/repo/src/components/InputText/InputText.tsx
ā ++ /path/to/your/repo/src/components/InputText/index.ts
ā ++ /path/to/your/repo/src/components/InputText/InputText.styles.ts
ā ++ /path/to/your/repo/src/components/InputText/InputText.models.ts2. Utils š
| Command | Description | Default value |
|---|---|---|
| Util name? | The name of your util function | |
| What path shall we put it in? (src/utils) | The path in which the new folder is going to be added in | src/utils |
If we choose the component name to be date format and everything else goes to default we end up with.
ā ++ /path/to/your/repo/src/utils/dateFormat/dateFormat.ts
ā ++ /path/to/your/repo/src/utils/dateFormat/index.tsCustomising
Right now you might be wondering.
What if I don't use TypeScript? What if I don't want to be asked every time if styles should be separate files? ...
All of these are very valid concerns and part of the reason why I decided to make this library. For those of you who want more customisation, a config file can be added with your preferences.
Create a cgl.config.js file on the root of your repo.
Here is some more information about what can be customised
Customisation Options
| Rule | Description | Default value |
|---|---|---|
| componentsPath | The path where the components will be put | src/components/ |
| jsx | If the main component will be .jsx / .tsx or .js / .ts | true |
| utilsPath | The default path for the utils | src/utils/ |
| withModels | Models to be separated from the main component. Models files will suffix with .models.* | true |
| withStyles | Styles to be separated from the main component. Styles files will suffix with .styles.* | true |
| withTests | File for tests to also be included in the same directory. WIll suffix with .test.* format | true |
| withTypescript | All files will be generated with TypeScript .ts / .tsx format | true |
Inspiration
Check out this link for reasoning and inspiration behind code-gen-library