@dinnger/atomic-design-vue
v1.0.1
Published
CLI para generar componentes Vue siguiendo Atomic Design
Maintainers
Readme
🎨 Atomic Design Vue CLI
CLI en TypeScript para generar componentes Vue siguiendo la metodología Atomic Design.
📦 Instalación
Como dependencia global
npm install -g @dinnger/atomic-design-vueUso con npx (sin instalación)
npx @dinnger/atomic-design-vue generate🚀 Uso
Inicializar estructura Atomic Design
Crea la estructura de carpetas siguiendo Atomic Design:
npx @dinnger/atomic-design-vue initEsto creará la siguiente estructura:
src/components/
├── atoms/ # Componentes básicos
├── molecules/ # Combinaciones de átomos
├── organisms/ # Componentes complejos
├── templates/ # Estructuras de página
└── pages/ # Páginas completasGenerar componentes
npx @dinnger/atomic-design-vue generate
# o usar el alias
npx @dinnger/atomic-design-vue gEl CLI te guiará interactivamente a través de las siguientes opciones:
- Tipo de componente: Atom, Molecule, Organism, Template o Page
- Nombre del componente: En PascalCase (ej: MyButton)
- Ruta de destino: Personalizada o estructura por defecto
- Composition API: ¿Usar
<script setup>? - Props: ¿Incluir props de ejemplo?
- Emits: ¿Incluir eventos de ejemplo?
- Tests: ¿Generar archivo de tests?
- Storybook: ¿Generar historia de Storybook?
📚 Metodología Atomic Design
Jerarquía de componentes
Átomos → Moléculas → Organismos → Templates → Páginas1. ⚛️ Átomos (Atoms)
Componentes básicos e indivisibles:
- Botones
- Inputs
- Labels
- Iconos
- Títulos
Ejemplo:
npx @dinnger/atomic-design-vue g
# Selecciona: Atom
# Nombre: Button2. 🧬 Moléculas (Molecules)
Combinaciones simples de átomos:
- Campo de formulario (Label + Input + Error)
- Search bar (Input + Button)
- Card simple
Ejemplo:
npx @dinnger/atomic-design-vue g
# Selecciona: Molecule
# Nombre: SearchBar3. 🦠 Organismos (Organisms)
Componentes complejos:
- Header completo
- Formulario completo
- Card compleja
- Sidebar con navegación
Ejemplo:
npx @dinnger/atomic-design-vue g
# Selecciona: Organism
# Nombre: NavigationHeader4. 📄 Templates
Estructuras de página:
- Layout principal
- Layout de dashboard
- Layout de autenticación
Ejemplo:
npx @dinnger/atomic-design-vue g
# Selecciona: Template
# Nombre: DashboardLayout5. 📱 Pages
Páginas completas con datos reales:
- Home page
- Login page
- Dashboard page
Ejemplo:
npx @dinnger/atomic-design-vue g
# Selecciona: Page
# Nombre: HomePage💡 Ejemplos de uso
Generar un botón (Atom)
npx @dinnger/atomic-design-vue gSelecciona:
- Tipo: Atom
- Nombre: PrimaryButton
- Composition API: Sí
- Props: Sí
- Emits: Sí
Genera:
src/components/atoms/PrimaryButton/
├── PrimaryButton.vue
├── index.ts
├── PrimaryButton.spec.ts (si se seleccionó)
└── PrimaryButton.stories.ts (si se seleccionó)Generar un formulario (Organism)
npx @dinnger/atomic-design-vue gSelecciona:
- Tipo: Organism
- Nombre: LoginForm
- Props: Sí
- Emits: Sí
- Tests: Sí
Usar ruta personalizada
npx @dinnger/atomic-design-vue gEn "Ruta de destino" escribe: src/features/auth/components
🎯 Mejores prácticas
Comienza desde abajo: Crea átomos primero, luego moléculas, etc.
Composición sobre herencia: Combina componentes simples para crear complejos.
Props bien tipadas: Define interfaces TypeScript claras.
Componentes presentacionales: Átomos y moléculas deben ser mayormente sin estado.
Lógica en niveles superiores: Organismos y páginas manejan la lógica de negocio.
Tests unitarios: Especialmente para átomos y moléculas reutilizables.
Documentación visual: Usa Storybook para catálogo de componentes.
🛠️ Desarrollo local
Clonar el repositorio
git clone https://github.com/tuusuario/atomic-design-vue.git
cd atomic-design-vueInstalar dependencias
npm installCompilar TypeScript
npm run buildDesarrollo con watch mode
npm run devProbar localmente
npm link
atomic-vue generate📝 Estructura de archivos generados
Cada componente genera:
ComponentName/
├── ComponentName.vue # Componente Vue
├── index.ts # Exportación simplificada
├── ComponentName.spec.ts # Tests (opcional)
└── ComponentName.stories.ts # Storybook (opcional)🤝 Contribuir
Las contribuciones son bienvenidas! Por favor:
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
📄 Licencia
ISC © Walter Ronquillo
🔗 Enlaces útiles
⭐ Características
- ✅ TypeScript completo
- ✅ Composition API y Options API
- ✅ Generación interactiva
- ✅ Plantillas personalizables
- ✅ Soporte para tests
- ✅ Soporte para Storybook
- ✅ Estructura Atomic Design completa
- ✅ Documentación incluida
- ✅ Ejecutable con npx
🐛 Problemas conocidos
Si encuentras algún problema, por favor abre un issue.
📧 Contacto
Walter Ronquillo - @tuusuario
