#!/usr/bin/env node /** * Script: Criar novo componente com estrutura padrão * Uso: node create-component.js NomeDoComponente [feature] * Exemplo: node create-component.js UserCard rh */ const fs = require('fs'); const path = require('path'); const [, , componentName, feature] = process.argv; if (!componentName) { console.error('❌ Nome do componente é obrigatório!'); console.log('Uso: node create-component.js NomeDoComponente [feature]'); process.exit(1); } // Definir caminho baseado em feature ou shared const basePath = feature ? path.join(__dirname, '../../src/features', feature, 'components', componentName) : path.join(__dirname, '../../src/components/shared', componentName); // Criar pasta if (!fs.existsSync(basePath)) { fs.mkdirSync(basePath, { recursive: true }); } // Template Produção const prodTemplate = `import { Card } from '@/components/ui/card'; /** * ${componentName} - Componente de produção */ export const ${componentName} = ({ data, className = '' }) => { return (

${componentName}

{/* Implementar conteúdo */}
); }; `; // Template Dev (Playground) const devTemplate = `import { ${componentName} } from './${componentName}'; /** * ${componentName}.dev - Versão para Playground com controles */ export const ${componentName}Dev = () => { const mockData = { // Mock data para testes }; return (

Controles (Dev)

{/* Adicionar controles de teste */}
<${componentName} data={mockData} />
); }; `; // Template index.js const indexTemplate = `export { ${componentName} } from './${componentName}'; export { ${componentName}Dev } from './${componentName}.dev'; `; // Escrever arquivos fs.writeFileSync(path.join(basePath, `${componentName}.jsx`), prodTemplate); fs.writeFileSync(path.join(basePath, `${componentName}.dev.jsx`), devTemplate); fs.writeFileSync(path.join(basePath, 'index.js'), indexTemplate); console.log(`✅ Componente ${componentName} criado com sucesso!`); console.log(`📁 Caminho: ${basePath}`); console.log(`\n📝 Próximos passos:`); console.log(`1. Implementar lógica em ${componentName}.jsx`); console.log(`2. Adicionar controles em ${componentName}.dev.jsx`); console.log(`3. Cadastrar no Playground (PlaygroundView.jsx)`); console.log(`4. Testar no Playground antes de usar em views`);