@dreamdemon/create-components-cli
v1.0.3
Published
CLI para crear múltiples componentes con extensión personalizada (Astro, React, Vue, etc.)
Maintainers
Readme
create-components CLI
CLI para crear múltiples componentes en lote con soporte para plantillas por proyecto y stubs incorporados.
Instalación
Proyecto local:
npm i -D create-components-cliGlobal (opcional):
npm i -g create-components-cliUso
Interactivo:
npm create-componentsTambién puedes ejecutar el binario directo si está instalado globalmente:
create-componentsStubs y plantillas
El generador busca plantillas (stubs) en este orden:
- Stubs del proyecto:
./stubs/<ext>/(por ejemplo./stubs/vue/,./stubs/astro/) - Stubs incorporados del paquete:
stubs/<ext>/dentro del módulo
Donde <ext> es astro, tsx, vue, js, ts.
Cada stub es un archivo nombrado como NOMBRE<ext> por ejemplo:
stubs/astro/basic.astrostubs/astro/with-slot.astrostubs/tsx/with-props.tsxstubs/vue/setup.vue
El CLI detecta automáticamente las plantillas disponibles para la extensión seleccionada y muestra solo esas opciones.
Placeholder de nombre
Dentro de la plantilla, puedes usar el texto Component como placeholder. El generador lo reemplaza por el nombre real del componente.
Ejemplo Vue (stubs/vue/basic.vue):
<template>
<div class="component">
Component
</div>
</template>
<script>
export default {
name: 'Component'
}
</script>Crear stubs personalizados por proyecto
Crea la carpeta de stubs en tu proyecto:
stubs/astro/stubs/tsx/stubs/vue/stubs/js/stubs/ts/
Añade tus archivos de plantilla. Ejemplos:
stubs/astro/card.astrostubs/vue/panel.vuestubs/tsx/with-state.tsx
Asegúrate de incluir el placeholder
Componentpara que se reemplace por el nombre.
Al ejecutar el CLI, verás tus plantillas personalizadas en la lista. Si una plantilla no existe para la extensión elegida, se usa basic si está disponible; si no hay stubs, se genera un contenido por defecto razonable.
API de Node
import { createComponents, getTemplatesForExt } from 'create-components-cli';
// Crea componentes a partir de una plantilla
await createComponents(['Button', 'Card'], '.vue', 'src/components', 'basic');
// Obtiene plantillas disponibles para una extensión
const vueTemplates = getTemplatesForExt('.vue');