diff --git a/plopfile.js b/plopfile.js deleted file mode 100644 index 4b7dc287..00000000 --- a/plopfile.js +++ /dev/null @@ -1,26 +0,0 @@ -export default function (plop) { - plop.setGenerator("module", { - description: "Crea un nuevo módulo ERP con plantilla base", - prompts: [ - { - type: "input", - name: "name", - message: "Nombre del módulo (kebab-case):", - }, - { - type: "input", - name: "plural", - message: "Nombre plural para las rutas (kebab-case):", - default: (answers) => `${plop.getHelper("kebabCase")(answers.name)}s`, - }, - ], - actions: [ - { - type: "addMany", - destination: "modules/{{kebabCase name}}", - base: "templates/new-module", - templateFiles: "templates/new-module/**", - }, - ], - }); -} diff --git a/plopfile.mjs b/plopfile.mjs new file mode 100644 index 00000000..cb2df483 --- /dev/null +++ b/plopfile.mjs @@ -0,0 +1,44 @@ +/** + * Generador de módulos ERP + * - module: bounded context (carpeta en modules/) + * - name: agregado principal (usa placeholders en plantillas) + * - plural: rutas/tabla (override del plural generado) + */ +export default function (plop) { + plop.setGenerator("module", { + description: "Crea un nuevo módulo (bounded context) con un agregado principal", + prompts: [ + { + type: "input", + name: "module", + message: "Nombre del bounded context (kebab-case, p.ej. 'billing'):", + validate: (v) => + (!!v && /^[a-z0-9\-]+$/.test(v)) || "Usa kebab-case (letras, números y guiones).", + filter: (v) => plop.getHelper("kebabCase")(v), + }, + { + type: "input", + name: "name", + message: "Nombre del agregado principal (kebab-case, p.ej. 'customer-invoice'):", + validate: (v) => + (!!v && /^[a-z0-9\-]+$/.test(v)) || "Usa kebab-case (letras, números y guiones).", + filter: (v) => plop.getHelper("kebabCase")(v), + }, + { + type: "input", + name: "plural", + message: "Nombre plural para las rutas/tabla (kebab-case):", + default: (answers) => `${plop.getHelper("kebabCase")(answers.name)}s`, + filter: (v) => plop.getHelper("kebabCase")(v), + }, + ], + actions: [ + { + type: "addMany", + destination: "modules/{{kebabCase module}}", + base: "templates/new-module", + templateFiles: "templates/new-module/**", + }, + ], + }); +}