208 lines
6.1 KiB
JavaScript
208 lines
6.1 KiB
JavaScript
module.exports = (plop) => {
|
|
plop.setGenerator("component", {
|
|
description: "Create a component",
|
|
prompts: [
|
|
{
|
|
type: "input",
|
|
name: "name",
|
|
message: "What is your component name?",
|
|
},
|
|
],
|
|
actions: [
|
|
{
|
|
type: "add",
|
|
path: "src/components/{{pascalCase name}}/{{pascalCase name}}.tsx",
|
|
templateFile: "plop-templates/Component/Component.tsx.hbs",
|
|
},
|
|
{
|
|
type: "add",
|
|
path: "src/components/{{pascalCase name}}/{{pascalCase name}}.test.ts",
|
|
templateFile: "plop-templates/Component/Component.test.ts.hbs",
|
|
},
|
|
{
|
|
type: "add",
|
|
path: "src/components/{{pascalCase name}}/{{pascalCase name}}.component.scss",
|
|
templateFile: "plop-templates/Component/Component.component.scss.hbs",
|
|
},
|
|
{
|
|
type: "add",
|
|
path: "src/components/{{pascalCase name}}/index.ts",
|
|
templateFile: "plop-templates/Component/index.ts.hbs",
|
|
},
|
|
{
|
|
type: "add",
|
|
path: "src/components/index.ts",
|
|
templateFile: "plop-templates/injectable-index.ts.hbs",
|
|
skipIfExists: true,
|
|
},
|
|
{
|
|
type: "append",
|
|
path: "src/components/index.ts",
|
|
pattern: `/* PLOP_INJECT_IMPORT */`,
|
|
template: `import {{pascalCase name}} from "./{{pascalCase name}}"`,
|
|
},
|
|
{
|
|
type: "append",
|
|
path: "src/components/index.ts",
|
|
pattern: `/* PLOP_INJECT_EXPORT */`,
|
|
template: `\t{{pascalCase name}},`,
|
|
},
|
|
],
|
|
})
|
|
plop.setGenerator("atom", {
|
|
description: "Create a component",
|
|
prompts: [
|
|
{
|
|
type: "input",
|
|
name: "name",
|
|
message: "What is your component name?",
|
|
},
|
|
],
|
|
actions: [
|
|
{
|
|
type: "add",
|
|
path: "src/components/atoms/{{pascalCase name}}/{{pascalCase name}}.tsx",
|
|
templateFile: "plop-templates/Component/Component.tsx.hbs",
|
|
},
|
|
{
|
|
type: "add",
|
|
path: "src/components/atoms/{{pascalCase name}}/{{pascalCase name}}.test.ts",
|
|
templateFile: "plop-templates/Component/Component.test.ts.hbs",
|
|
},
|
|
{
|
|
type: "add",
|
|
path: "src/components/atoms/{{pascalCase name}}/{{pascalCase name}}.component.scss",
|
|
templateFile: "plop-templates/Component/Component.component.scss.hbs",
|
|
},
|
|
{
|
|
type: "add",
|
|
path: "src/components/atoms/{{pascalCase name}}/index.ts",
|
|
templateFile: "plop-templates/Component/index.ts.hbs",
|
|
},
|
|
{
|
|
type: "add",
|
|
path: "src/components/index.ts",
|
|
templateFile: "plop-templates/injectable-index.ts.hbs",
|
|
skipIfExists: true,
|
|
},
|
|
{
|
|
type: "append",
|
|
path: "src/components/index.ts",
|
|
pattern: `/* PLOP_INJECT_IMPORT */`,
|
|
template: `import {{pascalCase name}} from "./atoms/{{pascalCase name}}"`,
|
|
},
|
|
{
|
|
type: "append",
|
|
path: "src/components/index.ts",
|
|
pattern: `/* PLOP_INJECT_EXPORT */`,
|
|
template: `\t{{pascalCase name}},`,
|
|
},
|
|
],
|
|
})
|
|
plop.setGenerator("molecule", {
|
|
description: "Create a rich component",
|
|
prompts: [
|
|
{
|
|
type: "input",
|
|
name: "name",
|
|
message: "What is your component name?",
|
|
},
|
|
],
|
|
actions: [
|
|
{
|
|
type: "add",
|
|
path: "src/components/molecules/{{pascalCase name}}/{{pascalCase name}}.tsx",
|
|
templateFile: "plop-templates/Component/Component.tsx.hbs",
|
|
},
|
|
{
|
|
type: "add",
|
|
path: "src/components/molecules/{{pascalCase name}}/{{pascalCase name}}.test.ts",
|
|
templateFile: "plop-templates/Component/Component.test.ts.hbs",
|
|
},
|
|
{
|
|
type: "add",
|
|
path: "src/components/molecules/{{pascalCase name}}/{{pascalCase name}}.component.scss",
|
|
templateFile: "plop-templates/Component/Component.component.scss.hbs",
|
|
},
|
|
{
|
|
type: "add",
|
|
path: "src/components/molecules/{{pascalCase name}}/index.ts",
|
|
templateFile: "plop-templates/Component/index.ts.hbs",
|
|
},
|
|
{
|
|
type: "add",
|
|
path: "src/components/index.ts",
|
|
templateFile: "plop-templates/injectable-index.ts.hbs",
|
|
skipIfExists: true,
|
|
},
|
|
{
|
|
type: "append",
|
|
path: "src/components/index.ts",
|
|
pattern: `/* PLOP_INJECT_IMPORT */`,
|
|
template: `import {{pascalCase name}} from "./molecules/{{pascalCase name}}"`,
|
|
},
|
|
{
|
|
type: "append",
|
|
path: "src/components/index.ts",
|
|
pattern: `/* PLOP_INJECT_EXPORT */`,
|
|
template: `\t{{pascalCase name}},`,
|
|
},
|
|
],
|
|
})
|
|
plop.setGenerator("page", {
|
|
description: "Create a page",
|
|
prompts: [
|
|
{
|
|
type: "input",
|
|
name: "name",
|
|
message: "What is your page name?",
|
|
},
|
|
],
|
|
actions: [
|
|
{
|
|
type: "add",
|
|
path: "src/pages/{{pascalCase name}}/{{pascalCase name}}.tsx",
|
|
templateFile: "plop-templates/Page/Page.tsx.hbs",
|
|
},
|
|
{
|
|
type: "add",
|
|
path: "src/pages/{{pascalCase name}}/{{pascalCase name}}.test.ts",
|
|
templateFile: "plop-templates/Page/Page.test.ts.hbs",
|
|
},
|
|
{
|
|
type: "add",
|
|
path: "src/pages/{{pascalCase name}}/{{pascalCase name}}.module.scss",
|
|
templateFile: "plop-templates/Page/Page.module.scss.hbs",
|
|
},
|
|
{
|
|
type: "add",
|
|
path: "src/pages/{{pascalCase name}}/index.ts",
|
|
templateFile: "plop-templates/Page/index.ts.hbs",
|
|
},
|
|
{
|
|
type: "add",
|
|
path: "src/pages/{{pascalCase name}}/{{pascalCase name}}.slice.ts",
|
|
templateFile: "plop-templates/Page/Page.slice.ts.hbs",
|
|
},
|
|
{
|
|
type: "add",
|
|
path: "src/pages/index.ts",
|
|
templateFile: "plop-templates/injectable-index.ts.hbs",
|
|
skipIfExists: true,
|
|
},
|
|
{
|
|
type: "append",
|
|
path: "src/pages/index.ts",
|
|
pattern: `/* PLOP_INJECT_IMPORT */`,
|
|
template: `import {{pascalCase name}} from "./{{pascalCase name}}"`,
|
|
},
|
|
{
|
|
type: "append",
|
|
path: "src/pages/index.ts",
|
|
pattern: `/* PLOP_INJECT_EXPORT */`,
|
|
template: `\t{{pascalCase name}},`,
|
|
},
|
|
],
|
|
})
|
|
}
|