Skip to content

MaxTCodes/super-code-generator

This branch is 5 commits behind jeremytenjo/super-code-generator:main.

Folders and files

NameName
Last commit message
Last commit date
Feb 7, 2025
Feb 4, 2025
Jun 8, 2022
Feb 4, 2025
Feb 4, 2025
Mar 4, 2025
Mar 1, 2025
May 21, 2021
Feb 4, 2025
Dec 2, 2024
Jan 31, 2025
Nov 30, 2024
Feb 4, 2025
Feb 4, 2025
Jan 9, 2022
Dec 13, 2024
Feb 4, 2025
Sep 25, 2021
Mar 1, 2025
Mar 1, 2025
Nov 30, 2024
Jan 30, 2025
Feb 4, 2025

Repository files navigation

Create Modern App Logo

Super Code Generator

A powerful, fast, and scalable code generator that saves you time

image info

  1. Create superCodeGen.schema.ts
import type { SuperCodeGeneratorConfigSchema } from '@jeremytenjo/super-code-generator'

const superCodeGeneratorConfig: SuperCodeGeneratorConfigSchema = [
  {
    type: 'React component',
    files: [
      {
        path: ({ name, helpers: { changeCase } }) => changeCase.paramCase(name) + '.tsx',
        template: ({ name, helpers: { wrapInTemplateLiteral, changeCase } }) => `
        import React from 'react';
        import styles from './${changeCase.paramCase(name)}.css';

        export default function ${changeCase.pascalCase(name)}() {
          return (
            <div className={${wrapInTemplateLiteral('styles.wrapper')}}>
             ${name}
            </div>
          );
        }
          `,
      },
      {
        path: ({ name, helpers: { changeCase } }) => changeCase.paramCase(name) + '.css',
        template: () => `.wrapper {}`,
      },
    ],
  },
]

export default superCodeGeneratorConfig
  1. Click right button in mouse and selected Create Component
  2. Pick component type
  3. Add component names
  4. Profit! ✨

Creates the following component when selecting type React component and inputting name button

button.jsx

import React from 'react'
import styles from './button.css'

export default function Button() {
  return <div className={`${styles.wrapper}`}>button</div>
}

button.css

.wrapper {
}

Generator Properties

type

Name of the scaffold eg React Component

files

Array of files to generate

usageInstructions Optional

Instructions the user will see when they type the component name

outputWithoutParentDir Optional

Determined whether to output generated code inside the parent directory

Options

createNamedFolder - default true

Creates files inside a folder named based on the component name

outputInRootFolder - default false

Always output code in root folder

formatParentFolderName - default undefined

Format the parent folder name, must be a function that takes { currentName: string } and returns { newName: string }

Hooks

onCreate

Trigger function after component is created.

import type {
  SuperCodeGeneratorTemplateSchema,
  SuperCodeGeneratorFilesSchema,
} from '@jeremytenjo/super-code-generator'
import shell from 'child_process'

const files: SuperCodeGeneratorFilesSchema = [
  {
    type: 'React component',
    hooks: {
      onCreate: ({ outputPath }) => {
        shell.exec(`cd ${outputPath}`)
      },
    },
    files: [
      {
        path: () => 'src/index.jsx',
        template: ({ name, helpers: { changeCase } }) => `
        import React from 'react';
        
        export default function ${changeCase.pascalCase(name)}() {
          return <div>${changeCase.pascalCase(name)}</div>
        }
          `,
      },
    ],
  },
]

const template: SuperCodeGeneratorTemplateSchema = {
  type: 'Component',
  files,
}

export default template

Component Type properties

Properties passed to path and template functions

name: 'component name input by user',
folderPath: 'component folder path',
helpers: {
  changeCase: 'function to change case of a string',
  wrapInTemplateLiteral: 'helps add templates literals within a template literal'
  addEmptyTemplateLiteral: 'returns ``'
}

Change case uses the change-case library

Pro Tip: Add a prettier config file path to format your created files.

About

A powerful, fast, and scalable code generator that saves you time

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 94.0%
  • JavaScript 6.0%