Uecko_ERP/plopfile.mjs

45 lines
1.5 KiB
JavaScript
Raw Normal View History

2025-09-27 20:14:29 +00:00
/**
* 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/**",
},
],
});
}