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.
- package/README.md +145 -2
- package/bin/index.js +1 -17
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,2 +1,145 @@
|
|
|
1
|
-
#
|
|
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: '
|
|
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
|
|