etildac-cli v1.0.3
Estructura del proyecto
⚠️⚒️Work in progress ⚠️⚒️
Como utilizar el CLI
Instalar el paquete de manera global y luego utilizarlo
> npm install -g etildac-cli
> etildac-cliO bien, directamente mediante npx
> npx etildac-cli¿Como agregar un nuevo template?
- Agregar el template en el directorio
templates/y darle un nombre (p.ej: myTemplate) - Dirigirse al archivo
src/types.d.tsy agregar en el typeTemplateChoiceun string con el nombre del nuevo template. Debe ser igual al nombre de la carpeta que que se agregó entemplates/.
Además, si el template tiene parámetros remplazables, se debe crear una interface con dichos parámetros:export type TemplateChoice = 'admin' | 'component' | ... | 'myTemplate'export interface MyTemplateParams { param1: string, param2: string } Crear un archivo .ts en el directorio
src/controllers/con el mismo nombre que tiene el template (p.ej: myTemplate.ts). En el archivo creado, agregar una clase que extienda de la clase abstracta "Controller" que se encuentra ensrc/controllers/base.tse implementar dicha clase. Se debe implementar las propiedadesquestionsytemplateNamey además el métodoprocessAnswers. Opcionalmente se debe asignar una interface a laController, el cual es una clase genérica. En este caso, se le asigna la interfaceMyTemplateParamspreviamente creada.import inquirer from 'inquirer' import { TemplateChoice } from '../types' import { Controller } from './base' export class MyTemplate extends Controller<MyTemplateParams | any> { questions: inquirer.QuestionCollection<any> templateName: TemplateChoice constructor () { super() this.questions = [ { name: 'question-name', type: 'input', message: 'Esto es una mensaje de prueba', } ] this.templateName = 'myTemplate' } processAnswers (answers: any): void { const inputValueForUser: string = answers['question-name'] ... this.createDirectoryContents( componentNameChoice, { param1: 'value1', param2: 'value2' } ) } }Agregar la nueva clase en el archivo
index.tsque se encuentra en el directoriosrc/controllers/- Dirigirse al archivo
src/index.tsy, en la propiedadcontrollers, agregar un nuevo campo con el nombre del nuevo template. El valor de dicho campo debe ser una instancia de la clase previamente creada ensrc/controllers/. - ¡Ejecutar el CLI y utilizar el nuevo template!
Nota: para parametrizar un template se utiliza la dependencia
ejs. Se recomienda leer documentación o revisar los otros templates para poder parametrizar uno nuevo.
Referencias
3 years ago