web-architect-cli 1.0.2 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +145 -2
  2. package/bin/index.js +1 -17
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -1,2 +1,145 @@
1
- # web-architect-cli
2
-
1
+ # 🏗️ Web Architect CLI
2
+
3
+ O **Web Architect CLI** é uma ferramenta de linha de comando projetada para padronizar e acelerar a criação de interfaces web (especialmente para o ecossistema Sankhya). Com um único comando, você gera uma estrutura completa, configurada com TailwindCSS e um sistema de build automático.
4
+
5
+ ## 📦 Instalação
6
+
7
+ Para utilizar a ferramenta em qualquer lugar do seu computador, instale a versão mais recente globalmente via npm:
8
+
9
+ Bash
10
+
11
+ ```
12
+ npm install -g web-architect-cli@latest
13
+ ```
14
+
15
+ > **Nota:** É necessário ter o [Node.js](https://nodejs.org/) instalado.
16
+
17
+ ---
18
+
19
+ ## 🚀 Como Utilizar
20
+
21
+ ### 1. Criando um Novo Projeto
22
+
23
+ Abra o terminal na pasta onde deseja iniciar o trabalho e execute:
24
+
25
+ Bash
26
+
27
+ ```
28
+ web-arch
29
+ ```
30
+
31
+ O assistente interativo iniciará:
32
+
33
+ 1. Ele pedirá o **nome do projeto** (ex: `painel-metas`).
34
+
35
+ 2. Criará automaticamente toda a estrutura de pastas e arquivos.
36
+
37
+ 3. Instalará as dependências necessárias.
38
+
39
+ ### 2. Fluxo de Desenvolvimento (O "Pulo do Gato")
40
+
41
+ Após criar o projeto, entre na pasta e inicie o modo de desenvolvimento:
42
+
43
+ Bash
44
+
45
+ ```
46
+ cd painel-metas
47
+ npm start
48
+ ```
49
+
50
+ **O que acontece agora?**
51
+
52
+ - O sistema entra em modo **WATCH** (monitoramento).
53
+
54
+ - Qualquer arquivo que você salvar dentro da pasta (HTML, CSS, JS), o script **automaticamente compacta o projeto** em um arquivo `.zip` com o nome da pasta (ex: `painel-metas.zip`).
55
+
56
+ - **Benefício:** Você não precisa zipar manualmente os arquivos toda vez que quiser subir para o ERP/Portal. Basta arrastar o zip gerado.
57
+
58
+ ---
59
+
60
+ ## 💡 Casos de Uso (Workflows)
61
+
62
+ Aqui estão os cenários comuns onde o **Web Architect CLI** brilha:
63
+
64
+ ### Caso A: Início Rápido de Dashboards (HTML/JSP)
65
+
66
+ > *Você precisa criar uma tela customizada para apresentar indicadores.*
67
+
68
+ 1. Rode `web-arch` e nomeie como `dash-financeiro`.
69
+
70
+ 2. O projeto já nasce com `index.jsp` contendo as importações Sankhya (`<snk:load/>`) e `index.html` para testes locais.
71
+
72
+ 3. Edite o `src/views/main.js` ou o HTML.
73
+
74
+ 4. O arquivo `dash-financeiro.zip` é atualizado instantaneamente.
75
+
76
+ 5. Faça o upload do ZIP no "Repositório de Arquivos" do sistema.
77
+
78
+ ### Caso B: Prototipagem com TailwindCSS
79
+
80
+ > *Você quer testar um layout moderno sem configurar Webpack ou PostCSS.*
81
+
82
+ 1. Rode `web-arch`.
83
+
84
+ 2. Vá direto ao HTML e comece a usar classes utilitárias:
85
+
86
+ HTML
87
+
88
+ ```
89
+ <div class="bg-blue-600 text-white p-4 rounded-lg shadow-md">
90
+ Olá, Mundo!
91
+ </div>
92
+ ```
93
+
94
+ 3. O Tailwind já vem injetado e pronto para uso via script (CDN/Local), sem build complexo.
95
+
96
+ ### Caso C: Padronização de Equipe
97
+
98
+ > *Vários desenvolvedores trabalhando em telas diferentes.*
99
+
100
+ Ao usar o comando `web-arch`, todos os projetos seguem a mesma árvore:
101
+
102
+ - `src/controllers/` (Lógica de negócio)
103
+
104
+ - `src/views/` (Manipulação de DOM)
105
+
106
+ - `src/services/` (Chamadas de API)
107
+
108
+ Isso facilita a manutenção cruzada: qualquer desenvolvedor sabe onde encontrar o código.
109
+
110
+ ---
111
+
112
+ ## 📂 Estrutura do Projeto Gerado
113
+
114
+ Plaintext
115
+
116
+ ```
117
+ meu-projeto/
118
+ ├── .git/
119
+ ├── node_modules/
120
+ ├── src/
121
+ │ ├── assets/
122
+ │ │ ├── css/ # Estilos globais
123
+ │ │ ├── js/ # Bibliotecas (Tailwind, etc)
124
+ │ ├── components/ # Fragmentos de UI
125
+ │ ├── controllers/ # Lógica
126
+ │ ├── services/ # Integrações
127
+ │ ├── utils/ # Funções auxiliares
128
+ │ └── main.js # Ponto de entrada JS
129
+ ├── build.js # Script de automação (Zip automático)
130
+ ├── index.html # Para rodar no navegador local
131
+ ├── index.jsp # Para rodar no servidor
132
+ ├── package.json
133
+ └── README.md
134
+ ```
135
+
136
+ ---
137
+
138
+ ## 🛠 Comandos do Projeto (Scripts)
139
+
140
+ Dentro da pasta do projeto criado, você pode usar:
141
+
142
+ | **Comando** | **Ação** |
143
+ | --------------- | --------------------------------------------------- |
144
+ | `npm start` | Inicia o monitoramento. Altera arquivo -> Gera ZIP. |
145
+ | `npm run build` | Gera o ZIP apenas uma vez e encerra. |
package/bin/index.js CHANGED
@@ -9,8 +9,6 @@ const rl = readline.createInterface({
9
9
  output: process.stdout
10
10
  });
11
11
 
12
- // --- 1. DEFINIÇÃO DOS CONTEÚDOS DOS ARQUIVOS ---
13
-
14
12
  const CONTEUDO_INDEX_JSP = `<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored ="false"%>
15
13
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
16
14
  <%@ page import="java.util.*" %>
@@ -78,10 +76,9 @@ const path = require('path');
78
76
 
79
77
  const CONFIG = {
80
78
  MODO_AUTOMATICO: true,
81
- NOME_ZIP: 'projeto.zip',
79
+ NOME_ZIP: path.basename(__dirname) + '.zip',
82
80
  ITENS: [
83
81
  { type: 'file', path: 'index.jsp', name: 'index.jsp' },
84
- { type: 'file', path: 'index.html', name: 'index.html' },
85
82
  { type: 'directory', path: 'src/', name: 'src' }
86
83
  ]
87
84
  };
@@ -147,8 +144,6 @@ const CONTEUDO_GITIGNORE = `node_modules/
147
144
 
148
145
  const CONTEUDO_GITATTRIBUTES = `* text=auto`;
149
146
 
150
- // --- 2. FUNÇÕES DO SISTEMA ---
151
-
152
147
  const logPasso = (emoji, msg) => console.log(`${emoji} ${msg}`);
153
148
 
154
149
  function criarPasta(caminho) {
@@ -165,8 +160,6 @@ function criarArquivo(caminho, conteudo) {
165
160
  logPasso('📄', `Arquivo criado: ${caminho}`);
166
161
  }
167
162
 
168
- // --- 3. EXECUÇÃO PRINCIPAL ---
169
-
170
163
  rl.question('🚀 Digite o nome do projeto: ', (nomeProjeto) => {
171
164
  if (!nomeProjeto) {
172
165
  console.log('❌ Nome inválido.');
@@ -180,7 +173,6 @@ rl.question('🚀 Digite o nome do projeto: ', (nomeProjeto) => {
180
173
  console.log(`🔨 INICIANDO CRIAÇÃO DO PROJETO: ${nomeProjeto}`);
181
174
  console.log(`---------------------------------------------------\n`);
182
175
 
183
- // 1. Criar Pasta Raiz
184
176
  if (fs.existsSync(raiz)) {
185
177
  console.log(`❌ A pasta '${nomeProjeto}' já existe.`);
186
178
  rl.close();
@@ -188,7 +180,6 @@ rl.question('🚀 Digite o nome do projeto: ', (nomeProjeto) => {
188
180
  }
189
181
  criarPasta(raiz);
190
182
 
191
- // 2. Criar Estrutura de Pastas
192
183
  const pastas = [
193
184
  'src/assets/css',
194
185
  'src/assets/img',
@@ -202,7 +193,6 @@ rl.question('🚀 Digite o nome do projeto: ', (nomeProjeto) => {
202
193
 
203
194
  pastas.forEach(p => criarPasta(path.join(raiz, p)));
204
195
 
205
- // 3. Criar Arquivos de Configuração e Raiz
206
196
  criarArquivo(path.join(raiz, 'index.jsp'), CONTEUDO_INDEX_JSP);
207
197
  criarArquivo(path.join(raiz, 'index.html'), CONTEUDO_INDEX_HTML);
208
198
  criarArquivo(path.join(raiz, 'build.js'), CONTEUDO_BUILD_JS);
@@ -210,7 +200,6 @@ rl.question('🚀 Digite o nome do projeto: ', (nomeProjeto) => {
210
200
  criarArquivo(path.join(raiz, '.gitattributes'), CONTEUDO_GITATTRIBUTES);
211
201
  criarArquivo(path.join(raiz, 'README.md'), `# ${nomeProjeto}\n\nProjeto gerado automaticamente.`);
212
202
 
213
- // 4. Criar Package.json
214
203
  const packageJson = {
215
204
  name: nomeProjeto,
216
205
  version: "1.0.0",
@@ -225,13 +214,10 @@ rl.question('🚀 Digite o nome do projeto: ', (nomeProjeto) => {
225
214
  };
226
215
  criarArquivo(path.join(raiz, 'package.json'), JSON.stringify(packageJson, null, 2));
227
216
 
228
- // 5. Criar Arquivos dentro de SRC
229
217
  criarArquivo(path.join(raiz, 'src/main.js'), `console.log('Aplicação iniciada');`);
230
218
 
231
- // 6. Criar Arquivos dentro de ASSETS (CSS)
232
219
  criarArquivo(path.join(raiz, 'src/assets/css/style.css'), `/* Estilos Globais */\nbody { font-family: 'Inter', sans-serif; }`);
233
220
 
234
- // --- LÓGICA DE CÓPIA DO TAILWIND ---
235
221
  const origemTailwind = path.join(__dirname, 'tailwindcss.js');
236
222
  const destinoTailwind = path.join(raiz, 'src/assets/js/tailwindcss.js');
237
223
 
@@ -252,11 +238,9 @@ rl.question('🚀 Digite o nome do projeto: ', (nomeProjeto) => {
252
238
  console.log(`---------------------------------------------------\n`);
253
239
 
254
240
  try {
255
- // 7. Inicializar GIT
256
241
  logPasso('GitHub', '📦 Inicializando repositório Git...');
257
242
  execSync('git init', { cwd: raiz, stdio: 'inherit' });
258
243
 
259
- // 8. Instalar Dependências (Archiver)
260
244
  logPasso('NPM', ' 📦 Instalando dependência: archiver...');
261
245
  execSync('npm install archiver', { cwd: raiz, stdio: 'inherit' });
262
246
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "web-architect-cli",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "bin": {