web-architect-cli 1.0.3 → 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 +0 -15
- 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.*" %>
|
|
@@ -146,8 +144,6 @@ const CONTEUDO_GITIGNORE = `node_modules/
|
|
|
146
144
|
|
|
147
145
|
const CONTEUDO_GITATTRIBUTES = `* text=auto`;
|
|
148
146
|
|
|
149
|
-
// --- 2. FUNÇÕES DO SISTEMA ---
|
|
150
|
-
|
|
151
147
|
const logPasso = (emoji, msg) => console.log(`${emoji} ${msg}`);
|
|
152
148
|
|
|
153
149
|
function criarPasta(caminho) {
|
|
@@ -164,8 +160,6 @@ function criarArquivo(caminho, conteudo) {
|
|
|
164
160
|
logPasso('📄', `Arquivo criado: ${caminho}`);
|
|
165
161
|
}
|
|
166
162
|
|
|
167
|
-
// --- 3. EXECUÇÃO PRINCIPAL ---
|
|
168
|
-
|
|
169
163
|
rl.question('🚀 Digite o nome do projeto: ', (nomeProjeto) => {
|
|
170
164
|
if (!nomeProjeto) {
|
|
171
165
|
console.log('❌ Nome inválido.');
|
|
@@ -179,7 +173,6 @@ rl.question('🚀 Digite o nome do projeto: ', (nomeProjeto) => {
|
|
|
179
173
|
console.log(`🔨 INICIANDO CRIAÇÃO DO PROJETO: ${nomeProjeto}`);
|
|
180
174
|
console.log(`---------------------------------------------------\n`);
|
|
181
175
|
|
|
182
|
-
// 1. Criar Pasta Raiz
|
|
183
176
|
if (fs.existsSync(raiz)) {
|
|
184
177
|
console.log(`❌ A pasta '${nomeProjeto}' já existe.`);
|
|
185
178
|
rl.close();
|
|
@@ -187,7 +180,6 @@ rl.question('🚀 Digite o nome do projeto: ', (nomeProjeto) => {
|
|
|
187
180
|
}
|
|
188
181
|
criarPasta(raiz);
|
|
189
182
|
|
|
190
|
-
// 2. Criar Estrutura de Pastas
|
|
191
183
|
const pastas = [
|
|
192
184
|
'src/assets/css',
|
|
193
185
|
'src/assets/img',
|
|
@@ -201,7 +193,6 @@ rl.question('🚀 Digite o nome do projeto: ', (nomeProjeto) => {
|
|
|
201
193
|
|
|
202
194
|
pastas.forEach(p => criarPasta(path.join(raiz, p)));
|
|
203
195
|
|
|
204
|
-
// 3. Criar Arquivos de Configuração e Raiz
|
|
205
196
|
criarArquivo(path.join(raiz, 'index.jsp'), CONTEUDO_INDEX_JSP);
|
|
206
197
|
criarArquivo(path.join(raiz, 'index.html'), CONTEUDO_INDEX_HTML);
|
|
207
198
|
criarArquivo(path.join(raiz, 'build.js'), CONTEUDO_BUILD_JS);
|
|
@@ -209,7 +200,6 @@ rl.question('🚀 Digite o nome do projeto: ', (nomeProjeto) => {
|
|
|
209
200
|
criarArquivo(path.join(raiz, '.gitattributes'), CONTEUDO_GITATTRIBUTES);
|
|
210
201
|
criarArquivo(path.join(raiz, 'README.md'), `# ${nomeProjeto}\n\nProjeto gerado automaticamente.`);
|
|
211
202
|
|
|
212
|
-
// 4. Criar Package.json
|
|
213
203
|
const packageJson = {
|
|
214
204
|
name: nomeProjeto,
|
|
215
205
|
version: "1.0.0",
|
|
@@ -224,13 +214,10 @@ rl.question('🚀 Digite o nome do projeto: ', (nomeProjeto) => {
|
|
|
224
214
|
};
|
|
225
215
|
criarArquivo(path.join(raiz, 'package.json'), JSON.stringify(packageJson, null, 2));
|
|
226
216
|
|
|
227
|
-
// 5. Criar Arquivos dentro de SRC
|
|
228
217
|
criarArquivo(path.join(raiz, 'src/main.js'), `console.log('Aplicação iniciada');`);
|
|
229
218
|
|
|
230
|
-
// 6. Criar Arquivos dentro de ASSETS (CSS)
|
|
231
219
|
criarArquivo(path.join(raiz, 'src/assets/css/style.css'), `/* Estilos Globais */\nbody { font-family: 'Inter', sans-serif; }`);
|
|
232
220
|
|
|
233
|
-
// --- LÓGICA DE CÓPIA DO TAILWIND ---
|
|
234
221
|
const origemTailwind = path.join(__dirname, 'tailwindcss.js');
|
|
235
222
|
const destinoTailwind = path.join(raiz, 'src/assets/js/tailwindcss.js');
|
|
236
223
|
|
|
@@ -251,11 +238,9 @@ rl.question('🚀 Digite o nome do projeto: ', (nomeProjeto) => {
|
|
|
251
238
|
console.log(`---------------------------------------------------\n`);
|
|
252
239
|
|
|
253
240
|
try {
|
|
254
|
-
// 7. Inicializar GIT
|
|
255
241
|
logPasso('GitHub', '📦 Inicializando repositório Git...');
|
|
256
242
|
execSync('git init', { cwd: raiz, stdio: 'inherit' });
|
|
257
243
|
|
|
258
|
-
// 8. Instalar Dependências (Archiver)
|
|
259
244
|
logPasso('NPM', ' 📦 Instalando dependência: archiver...');
|
|
260
245
|
execSync('npm install archiver', { cwd: raiz, stdio: 'inherit' });
|
|
261
246
|
|