create-zs3-app 1.0.0 → 1.0.2
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 +182 -182
- package/bin/cli.js +118 -118
- package/package.json +1 -1
- package/src/index.js +981 -981
- package/templates/backend-ts/eslint.config.js +1 -1
- package/templates/backend-ts/tsconfig.json +14 -10
- package/templates/backend-ts/tsconfig.node.json +15 -0
- package/templates/backend-ts/vite.config.ts +20 -0
- package/templates/backend-ts-express/eslint.config.js +1 -1
- package/templates/backend-ts-express/tsconfig.json +14 -10
- package/templates/backend-ts-express/tsconfig.node.json +15 -0
- package/templates/backend-ts-express/vite.config.ts +20 -0
- package/templates/backend-vanilla/eslint.config.js +19 -3
- package/templates/backend-vanilla/tsconfig.json +29 -0
- package/templates/backend-vanilla/tsconfig.node.json +15 -0
- package/templates/backend-vanilla/vite.config.ts +20 -0
- package/templates/backend-vanilla-express/eslint.config.js +19 -3
- package/templates/backend-vanilla-express/tsconfig.json +29 -0
- package/templates/backend-vanilla-express/tsconfig.node.json +15 -0
- package/templates/backend-vanilla-express/vite.config.ts +20 -0
- package/templates/frontend-ts/eslint.config.js +1 -1
- package/templates/frontend-ts/tsconfig.json +6 -1
- package/templates/frontend-ts/tsconfig.node.json +15 -0
- package/templates/frontend-ts/vite.config.ts +8 -1
- package/templates/frontend-ts-zs3/eslint.config.js +1 -1
- package/templates/frontend-ts-zs3/package.json +34 -34
- package/templates/frontend-ts-zs3/src/main.ts +31 -31
- package/templates/frontend-ts-zs3/tsconfig.json +6 -1
- package/templates/frontend-ts-zs3/tsconfig.node.json +15 -0
- package/templates/frontend-ts-zs3/vite.config.ts +8 -1
- package/templates/frontend-vanilla/eslint.config.js +20 -4
- package/templates/frontend-vanilla/tsconfig.json +29 -0
- package/templates/frontend-vanilla/tsconfig.node.json +15 -0
- package/templates/frontend-vanilla/vite.config.ts +20 -0
- package/templates/frontend-vanilla-zs3/eslint.config.js +20 -4
- package/templates/frontend-vanilla-zs3/package.json +30 -30
- package/templates/frontend-vanilla-zs3/src/main.js +31 -31
- package/templates/frontend-vanilla-zs3/tsconfig.json +29 -0
- package/templates/frontend-vanilla-zs3/tsconfig.node.json +15 -0
- package/templates/frontend-vanilla-zs3/vite.config.ts +20 -0
package/README.md
CHANGED
|
@@ -1,182 +1,182 @@
|
|
|
1
|
-
# create-zs3-app
|
|
2
|
-
|
|
3
|
-
Generador interactiu de projectes amb configuració estandarditzada. Crea projectes backend i frontend amb TypeScript o JavaScript, linting, formatació i VS Code configurats automàticament.
|
|
4
|
-
|
|
5
|
-
## Ús ràpid
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
npx @el-teu-username/create-zs3-app
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
O amb instal·lació global:
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
npm install -g @el-teu-username/create-zs3-app
|
|
15
|
-
create-zs3-app
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
### Arguments CLI
|
|
19
|
-
|
|
20
|
-
Es pot saltar total o parcialment el wizard passant arguments per línia de comandes. Si en falten alguns, el wizard només pregunta els que falten.
|
|
21
|
-
|
|
22
|
-
| Argument | Valors | Descripció |
|
|
23
|
-
|---|---|---|
|
|
24
|
-
| `--type` | `backend`, `frontend`, `fullstack` | Tipus de projecte |
|
|
25
|
-
| `--name` | text (`a-z0-9-_`) | Nom del projecte |
|
|
26
|
-
| `--variant` | `ts`, `vanilla` | TypeScript o JavaScript |
|
|
27
|
-
| `--framework` | `express`, `zs3`, `express-zs3`, `none` | Framework addicional |
|
|
28
|
-
| `--description` | text | Descripció del projecte |
|
|
29
|
-
| `--author` | text | Autor del projecte |
|
|
30
|
-
| `--git` / `--no-git` | — | Inicialitzar repositori Git |
|
|
31
|
-
| `--dry-run` | — | Mostra els fitxers sense crear res |
|
|
32
|
-
| `-h`, `--help` | — | Mostra l'ajuda i surt |
|
|
33
|
-
|
|
34
|
-
Exemple sense cap pregunta interactiva:
|
|
35
|
-
|
|
36
|
-
```bash
|
|
37
|
-
npx @el-teu-username/create-zs3-app --type backend --name my-api --variant ts --framework express --author "Joan" --git
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
Exemple parcial (el wizard pregunta el que falta):
|
|
41
|
-
|
|
42
|
-
```bash
|
|
43
|
-
npx @el-teu-username/create-zs3-app --type frontend --name my-app
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
Exemple fullstack (Express + zs3-ui
|
|
47
|
-
|
|
48
|
-
```bash
|
|
49
|
-
npx @el-teu-username/create-zs3-app --type fullstack --name my-app --variant ts --framework express-zs3 --git
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
Es pot combinar amb `--dry-run`:
|
|
53
|
-
|
|
54
|
-
```bash
|
|
55
|
-
npx @el-teu-username/create-zs3-app --type backend --variant ts --name test --dry-run
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
## Tipus de projectes disponibles
|
|
59
|
-
|
|
60
|
-
| Template | Stack |
|
|
61
|
-
|---|---|
|
|
62
|
-
| Backend (TypeScript) | Node.js + TypeScript + dotenv |
|
|
63
|
-
| Backend (TypeScript + Express) | Node.js + TypeScript + Express + dotenv |
|
|
64
|
-
| Backend (JavaScript) | Node.js + JavaScript + dotenv |
|
|
65
|
-
| Backend (JavaScript + Express) | Node.js + JavaScript + Express + dotenv |
|
|
66
|
-
| Frontend (TypeScript) | Vite + TypeScript |
|
|
67
|
-
| Frontend (TypeScript + zs3-ui
|
|
68
|
-
| Frontend (JavaScript) | Vite + JavaScript |
|
|
69
|
-
| Frontend (JavaScript + zs3-ui
|
|
70
|
-
| Fullstack | Monorepo (npm workspaces) amb backend + frontend combinats dinàmicament |
|
|
71
|
-
|
|
72
|
-
> **Fullstack**: No hi ha templates estàtics fullstack. El generador composa dinàmicament un monorepo combinant un template backend i un frontend dels 8 existents, suportant les 8 combinacions possibles. Utilitza `concurrently` per executar backend i frontend simultàniament.
|
|
73
|
-
|
|
74
|
-
## Wizard interactiu
|
|
75
|
-
|
|
76
|
-
El generador fa les preguntes següents:
|
|
77
|
-
|
|
78
|
-
1. **Tipus de projecte**: Backend, Frontend o Fullstack
|
|
79
|
-
2. **Nom del projecte**: Nom del directori (lletres minúscules, números, guions)
|
|
80
|
-
3. **Descripció**: Descripció del projecte (opcional)
|
|
81
|
-
4. **Autor**: Nom de l'autor (opcional)
|
|
82
|
-
5. **Git**: Si vols inicialitzar un repositori Git
|
|
83
|
-
6. **Variant**: TypeScript o Vanilla (JavaScript)
|
|
84
|
-
7. **Framework**: Express (backend), zs3-ui
|
|
85
|
-
|
|
86
|
-
Abans de crear res, mostra un resum per confirmar.
|
|
87
|
-
|
|
88
|
-
## Exemple
|
|
89
|
-
|
|
90
|
-
```
|
|
91
|
-
$ npx @el-teu-username/create-zs3-app
|
|
92
|
-
|
|
93
|
-
🚀 Generador de projectes
|
|
94
|
-
|
|
95
|
-
? Quin tipus de projecte vols crear? Backend
|
|
96
|
-
? Nom del projecte: my-api
|
|
97
|
-
? Descripció del projecte: API REST
|
|
98
|
-
? Autor: El meu nom
|
|
99
|
-
? Inicialitzar repositori Git? Sí
|
|
100
|
-
? Quina variant vols utilitzar? TypeScript
|
|
101
|
-
? Vols utilitzar Express? Sí
|
|
102
|
-
|
|
103
|
-
📋 Resum del projecte:
|
|
104
|
-
|
|
105
|
-
Tipus: Backend (TypeScript + Express)
|
|
106
|
-
Nom: my-api
|
|
107
|
-
Descripció: API REST
|
|
108
|
-
Autor: El meu nom
|
|
109
|
-
Git: Sí
|
|
110
|
-
Express: Sí
|
|
111
|
-
|
|
112
|
-
? Vols crear el projecte amb aquesta configuració? Sí
|
|
113
|
-
|
|
114
|
-
📦 Creant projecte...
|
|
115
|
-
|
|
116
|
-
✓ Repositori Git inicialitzat
|
|
117
|
-
|
|
118
|
-
✨ Projecte creat amb èxit!
|
|
119
|
-
|
|
120
|
-
Passos següents:
|
|
121
|
-
|
|
122
|
-
cd my-api
|
|
123
|
-
npm install
|
|
124
|
-
npm run dev
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
## Què inclou cada projecte generat
|
|
128
|
-
|
|
129
|
-
Tots els projectes inclouen:
|
|
130
|
-
|
|
131
|
-
- ESLint 9 amb flat config i regles de qualitat de codi
|
|
132
|
-
- Prettier per formatació automàtica
|
|
133
|
-
- EditorConfig per consistència entre editors
|
|
134
|
-
- Configuració de VS Code (settings + extensions recomanades)
|
|
135
|
-
- Scripts npm predefinits (`dev`, `lint`, `lint:fix`, `format`, `format:check`)
|
|
136
|
-
- `.gitignore` configurat
|
|
137
|
-
|
|
138
|
-
Els projectes TypeScript afegeixen a més:
|
|
139
|
-
|
|
140
|
-
- `tsconfig.json` amb configuració estricta
|
|
141
|
-
- Scripts addicionals (`build`, `type-check`)
|
|
142
|
-
- Regles ESLint per TypeScript (`no-explicit-any`, `no-floating-promises`, etc.)
|
|
143
|
-
|
|
144
|
-
## Scripts disponibles als projectes generats
|
|
145
|
-
|
|
146
|
-
### Fullstack (monorepo)
|
|
147
|
-
|
|
148
|
-
```bash
|
|
149
|
-
npm run dev # Inicia backend i frontend simultàniament
|
|
150
|
-
npm run dev:backend # Només backend
|
|
151
|
-
npm run dev:frontend # Només frontend
|
|
152
|
-
npm run build # Build de producció
|
|
153
|
-
npm run lint # Lint de tot el projecte
|
|
154
|
-
npm run format # Formatar tot el projecte
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
### Backend
|
|
158
|
-
|
|
159
|
-
```bash
|
|
160
|
-
npm run dev # Desenvolupament amb hot reload
|
|
161
|
-
npm start # Producció
|
|
162
|
-
npm run lint # Analitzar codi
|
|
163
|
-
npm run format # Formatar codi
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
### Frontend
|
|
167
|
-
|
|
168
|
-
```bash
|
|
169
|
-
npm run dev # Servidor de desenvolupament Vite
|
|
170
|
-
npm run build # Build de producció
|
|
171
|
-
npm run preview # Previsualitzar build
|
|
172
|
-
npm run lint # Analitzar codi
|
|
173
|
-
npm run format # Formatar codi
|
|
174
|
-
```
|
|
175
|
-
|
|
176
|
-
## Requisits
|
|
177
|
-
|
|
178
|
-
- Node.js >= 18
|
|
179
|
-
|
|
180
|
-
## Llicència
|
|
181
|
-
|
|
182
|
-
MIT
|
|
1
|
+
# create-zs3-app
|
|
2
|
+
|
|
3
|
+
Generador interactiu de projectes amb configuració estandarditzada. Crea projectes backend i frontend amb TypeScript o JavaScript, linting, formatació i VS Code configurats automàticament.
|
|
4
|
+
|
|
5
|
+
## Ús ràpid
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npx @el-teu-username/create-zs3-app
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
O amb instal·lació global:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npm install -g @el-teu-username/create-zs3-app
|
|
15
|
+
create-zs3-app
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
### Arguments CLI
|
|
19
|
+
|
|
20
|
+
Es pot saltar total o parcialment el wizard passant arguments per línia de comandes. Si en falten alguns, el wizard només pregunta els que falten.
|
|
21
|
+
|
|
22
|
+
| Argument | Valors | Descripció |
|
|
23
|
+
|---|---|---|
|
|
24
|
+
| `--type` | `backend`, `frontend`, `fullstack` | Tipus de projecte |
|
|
25
|
+
| `--name` | text (`a-z0-9-_`) | Nom del projecte |
|
|
26
|
+
| `--variant` | `ts`, `vanilla` | TypeScript o JavaScript |
|
|
27
|
+
| `--framework` | `express`, `zs3`, `express-zs3`, `none` | Framework addicional |
|
|
28
|
+
| `--description` | text | Descripció del projecte |
|
|
29
|
+
| `--author` | text | Autor del projecte |
|
|
30
|
+
| `--git` / `--no-git` | — | Inicialitzar repositori Git |
|
|
31
|
+
| `--dry-run` | — | Mostra els fitxers sense crear res |
|
|
32
|
+
| `-h`, `--help` | — | Mostra l'ajuda i surt |
|
|
33
|
+
|
|
34
|
+
Exemple sense cap pregunta interactiva:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
npx @el-teu-username/create-zs3-app --type backend --name my-api --variant ts --framework express --author "Joan" --git
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Exemple parcial (el wizard pregunta el que falta):
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
npx @el-teu-username/create-zs3-app --type frontend --name my-app
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Exemple fullstack (Express + zs3-ui):
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
npx @el-teu-username/create-zs3-app --type fullstack --name my-app --variant ts --framework express-zs3 --git
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Es pot combinar amb `--dry-run`:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
npx @el-teu-username/create-zs3-app --type backend --variant ts --name test --dry-run
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Tipus de projectes disponibles
|
|
59
|
+
|
|
60
|
+
| Template | Stack |
|
|
61
|
+
|---|---|
|
|
62
|
+
| Backend (TypeScript) | Node.js + TypeScript + dotenv |
|
|
63
|
+
| Backend (TypeScript + Express) | Node.js + TypeScript + Express + dotenv |
|
|
64
|
+
| Backend (JavaScript) | Node.js + JavaScript + dotenv |
|
|
65
|
+
| Backend (JavaScript + Express) | Node.js + JavaScript + Express + dotenv |
|
|
66
|
+
| Frontend (TypeScript) | Vite + TypeScript |
|
|
67
|
+
| Frontend (TypeScript + zs3-ui) | Vite + TypeScript + zs3-ui |
|
|
68
|
+
| Frontend (JavaScript) | Vite + JavaScript |
|
|
69
|
+
| Frontend (JavaScript + zs3-ui) | Vite + JavaScript + zs3-ui |
|
|
70
|
+
| Fullstack | Monorepo (npm workspaces) amb backend + frontend combinats dinàmicament |
|
|
71
|
+
|
|
72
|
+
> **Fullstack**: No hi ha templates estàtics fullstack. El generador composa dinàmicament un monorepo combinant un template backend i un frontend dels 8 existents, suportant les 8 combinacions possibles. Utilitza `concurrently` per executar backend i frontend simultàniament.
|
|
73
|
+
|
|
74
|
+
## Wizard interactiu
|
|
75
|
+
|
|
76
|
+
El generador fa les preguntes següents:
|
|
77
|
+
|
|
78
|
+
1. **Tipus de projecte**: Backend, Frontend o Fullstack
|
|
79
|
+
2. **Nom del projecte**: Nom del directori (lletres minúscules, números, guions)
|
|
80
|
+
3. **Descripció**: Descripció del projecte (opcional)
|
|
81
|
+
4. **Autor**: Nom de l'autor (opcional)
|
|
82
|
+
5. **Git**: Si vols inicialitzar un repositori Git
|
|
83
|
+
6. **Variant**: TypeScript o Vanilla (JavaScript)
|
|
84
|
+
7. **Framework**: Express (backend), zs3-ui (frontend), o ambdós per separat (fullstack)
|
|
85
|
+
|
|
86
|
+
Abans de crear res, mostra un resum per confirmar.
|
|
87
|
+
|
|
88
|
+
## Exemple
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
$ npx @el-teu-username/create-zs3-app
|
|
92
|
+
|
|
93
|
+
🚀 Generador de projectes
|
|
94
|
+
|
|
95
|
+
? Quin tipus de projecte vols crear? Backend
|
|
96
|
+
? Nom del projecte: my-api
|
|
97
|
+
? Descripció del projecte: API REST
|
|
98
|
+
? Autor: El meu nom
|
|
99
|
+
? Inicialitzar repositori Git? Sí
|
|
100
|
+
? Quina variant vols utilitzar? TypeScript
|
|
101
|
+
? Vols utilitzar Express? Sí
|
|
102
|
+
|
|
103
|
+
📋 Resum del projecte:
|
|
104
|
+
|
|
105
|
+
Tipus: Backend (TypeScript + Express)
|
|
106
|
+
Nom: my-api
|
|
107
|
+
Descripció: API REST
|
|
108
|
+
Autor: El meu nom
|
|
109
|
+
Git: Sí
|
|
110
|
+
Express: Sí
|
|
111
|
+
|
|
112
|
+
? Vols crear el projecte amb aquesta configuració? Sí
|
|
113
|
+
|
|
114
|
+
📦 Creant projecte...
|
|
115
|
+
|
|
116
|
+
✓ Repositori Git inicialitzat
|
|
117
|
+
|
|
118
|
+
✨ Projecte creat amb èxit!
|
|
119
|
+
|
|
120
|
+
Passos següents:
|
|
121
|
+
|
|
122
|
+
cd my-api
|
|
123
|
+
npm install
|
|
124
|
+
npm run dev
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## Què inclou cada projecte generat
|
|
128
|
+
|
|
129
|
+
Tots els projectes inclouen:
|
|
130
|
+
|
|
131
|
+
- ESLint 9 amb flat config i regles de qualitat de codi
|
|
132
|
+
- Prettier per formatació automàtica
|
|
133
|
+
- EditorConfig per consistència entre editors
|
|
134
|
+
- Configuració de VS Code (settings + extensions recomanades)
|
|
135
|
+
- Scripts npm predefinits (`dev`, `lint`, `lint:fix`, `format`, `format:check`)
|
|
136
|
+
- `.gitignore` configurat
|
|
137
|
+
|
|
138
|
+
Els projectes TypeScript afegeixen a més:
|
|
139
|
+
|
|
140
|
+
- `tsconfig.json` amb configuració estricta
|
|
141
|
+
- Scripts addicionals (`build`, `type-check`)
|
|
142
|
+
- Regles ESLint per TypeScript (`no-explicit-any`, `no-floating-promises`, etc.)
|
|
143
|
+
|
|
144
|
+
## Scripts disponibles als projectes generats
|
|
145
|
+
|
|
146
|
+
### Fullstack (monorepo)
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
npm run dev # Inicia backend i frontend simultàniament
|
|
150
|
+
npm run dev:backend # Només backend
|
|
151
|
+
npm run dev:frontend # Només frontend
|
|
152
|
+
npm run build # Build de producció
|
|
153
|
+
npm run lint # Lint de tot el projecte
|
|
154
|
+
npm run format # Formatar tot el projecte
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### Backend
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
npm run dev # Desenvolupament amb hot reload
|
|
161
|
+
npm start # Producció
|
|
162
|
+
npm run lint # Analitzar codi
|
|
163
|
+
npm run format # Formatar codi
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### Frontend
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
npm run dev # Servidor de desenvolupament Vite
|
|
170
|
+
npm run build # Build de producció
|
|
171
|
+
npm run preview # Previsualitzar build
|
|
172
|
+
npm run lint # Analitzar codi
|
|
173
|
+
npm run format # Formatar codi
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
## Requisits
|
|
177
|
+
|
|
178
|
+
- Node.js >= 18
|
|
179
|
+
|
|
180
|
+
## Llicència
|
|
181
|
+
|
|
182
|
+
MIT
|
package/bin/cli.js
CHANGED
|
@@ -1,118 +1,118 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
import { main } from '../src/index.js'
|
|
4
|
-
|
|
5
|
-
function showHelp() {
|
|
6
|
-
console.log(`
|
|
7
|
-
create-zs3-app — Generador interactiu de projectes
|
|
8
|
-
|
|
9
|
-
Ús: create-zs3-app [opcions]
|
|
10
|
-
|
|
11
|
-
Opcions:
|
|
12
|
-
--type <valor> Tipus de projecte (backend, frontend, fullstack)
|
|
13
|
-
--name <valor> Nom del projecte (lletres minúscules, números, guions)
|
|
14
|
-
--variant <valor> Variant del projecte (ts, vanilla)
|
|
15
|
-
--framework <valor> Framework addicional (express, zs3, express-zs3, none)
|
|
16
|
-
--description <valor> Descripció del projecte
|
|
17
|
-
--author <valor> Autor del projecte
|
|
18
|
-
--git Inicialitzar repositori Git
|
|
19
|
-
--no-git No inicialitzar repositori Git
|
|
20
|
-
--pm <valor> Package manager (npm, yarn, pnpm)
|
|
21
|
-
--install Instal·lar dependències automàticament
|
|
22
|
-
--no-install No instal·lar dependències
|
|
23
|
-
--license <valor> Llicència del projecte (mit, apache-2.0, gpl-3.0, none)
|
|
24
|
-
--dry-run Mostra els fitxers que es crearien sense crear res
|
|
25
|
-
-h, --help Mostra aquesta ajuda i surt
|
|
26
|
-
|
|
27
|
-
Wizard interactiu:
|
|
28
|
-
Si no es passa cap argument, el generador fa les preguntes següents:
|
|
29
|
-
1. Tipus de projecte (Backend / Frontend / Fullstack)
|
|
30
|
-
2. Nom del projecte
|
|
31
|
-
3. Descripció (opcional)
|
|
32
|
-
4. Autor (opcional)
|
|
33
|
-
5. Inicialitzar Git (sí/no)
|
|
34
|
-
6. Variant (TypeScript / Vanilla)
|
|
35
|
-
7. Framework (Express per backend, zs3-ui
|
|
36
|
-
ambdós per fullstack)
|
|
37
|
-
8. Package manager (npm / yarn / pnpm)
|
|
38
|
-
9. Instal·lar dependències (sí/no)
|
|
39
|
-
|
|
40
|
-
Si es passen alguns arguments, el wizard només pregunta els que falten.
|
|
41
|
-
El resum i la confirmació es mostren sempre abans de crear res.
|
|
42
|
-
|
|
43
|
-
Exemples:
|
|
44
|
-
create-zs3-app
|
|
45
|
-
create-zs3-app --type backend --name my-api --variant ts --framework express --git
|
|
46
|
-
create-zs3-app --type frontend --name my-app
|
|
47
|
-
create-zs3-app --type fullstack --name my-app --variant ts --framework express-zs3 --git
|
|
48
|
-
create-zs3-app --type backend --variant ts --name test --dry-run
|
|
49
|
-
create-zs3-app --type backend --name my-api --pm yarn --install
|
|
50
|
-
`)
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
function parseArgs(argv) {
|
|
54
|
-
const args = argv.slice(2)
|
|
55
|
-
const options = {}
|
|
56
|
-
|
|
57
|
-
for (let i = 0; i < args.length; i++) {
|
|
58
|
-
switch (args[i].toLowerCase()) {
|
|
59
|
-
case '-h':
|
|
60
|
-
case '--help':
|
|
61
|
-
options.help = true
|
|
62
|
-
break
|
|
63
|
-
case '--dry-run':
|
|
64
|
-
options.dryRun = true
|
|
65
|
-
break
|
|
66
|
-
case '--type':
|
|
67
|
-
options.type = args[++i].toLowerCase()
|
|
68
|
-
break
|
|
69
|
-
case '--name':
|
|
70
|
-
options.name = args[++i].toLowerCase()
|
|
71
|
-
break
|
|
72
|
-
case '--variant':
|
|
73
|
-
options.variant = args[++i].toLowerCase()
|
|
74
|
-
break
|
|
75
|
-
case '--framework':
|
|
76
|
-
options.framework = args[++i].toLowerCase()
|
|
77
|
-
break
|
|
78
|
-
case '--license':
|
|
79
|
-
options.license = args[++i].toLowerCase()
|
|
80
|
-
break
|
|
81
|
-
case '--description':
|
|
82
|
-
options.description = args[++i].toLowerCase()
|
|
83
|
-
break
|
|
84
|
-
case '--author':
|
|
85
|
-
options.author = args[++i].toLowerCase()
|
|
86
|
-
break
|
|
87
|
-
case '--git':
|
|
88
|
-
options.git = true
|
|
89
|
-
break
|
|
90
|
-
case '--no-git':
|
|
91
|
-
options.git = false
|
|
92
|
-
break
|
|
93
|
-
case '--pm':
|
|
94
|
-
options.pm = args[++i].toLowerCase()
|
|
95
|
-
break
|
|
96
|
-
case '--install':
|
|
97
|
-
options.install = true
|
|
98
|
-
break
|
|
99
|
-
case '--no-install':
|
|
100
|
-
options.install = false
|
|
101
|
-
break
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
return options
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
const options = parseArgs(process.argv)
|
|
109
|
-
|
|
110
|
-
if (options.help) {
|
|
111
|
-
showHelp()
|
|
112
|
-
process.exit(0)
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
main(options).catch((error) => {
|
|
116
|
-
console.error('Error:', error.message)
|
|
117
|
-
process.exit(1)
|
|
118
|
-
})
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { main } from '../src/index.js'
|
|
4
|
+
|
|
5
|
+
function showHelp() {
|
|
6
|
+
console.log(`
|
|
7
|
+
create-zs3-app — Generador interactiu de projectes
|
|
8
|
+
|
|
9
|
+
Ús: create-zs3-app [opcions]
|
|
10
|
+
|
|
11
|
+
Opcions:
|
|
12
|
+
--type <valor> Tipus de projecte (backend, frontend, fullstack)
|
|
13
|
+
--name <valor> Nom del projecte (lletres minúscules, números, guions)
|
|
14
|
+
--variant <valor> Variant del projecte (ts, vanilla)
|
|
15
|
+
--framework <valor> Framework addicional (express, zs3, express-zs3, none)
|
|
16
|
+
--description <valor> Descripció del projecte
|
|
17
|
+
--author <valor> Autor del projecte
|
|
18
|
+
--git Inicialitzar repositori Git
|
|
19
|
+
--no-git No inicialitzar repositori Git
|
|
20
|
+
--pm <valor> Package manager (npm, yarn, pnpm)
|
|
21
|
+
--install Instal·lar dependències automàticament
|
|
22
|
+
--no-install No instal·lar dependències
|
|
23
|
+
--license <valor> Llicència del projecte (mit, apache-2.0, gpl-3.0, none)
|
|
24
|
+
--dry-run Mostra els fitxers que es crearien sense crear res
|
|
25
|
+
-h, --help Mostra aquesta ajuda i surt
|
|
26
|
+
|
|
27
|
+
Wizard interactiu:
|
|
28
|
+
Si no es passa cap argument, el generador fa les preguntes següents:
|
|
29
|
+
1. Tipus de projecte (Backend / Frontend / Fullstack)
|
|
30
|
+
2. Nom del projecte
|
|
31
|
+
3. Descripció (opcional)
|
|
32
|
+
4. Autor (opcional)
|
|
33
|
+
5. Inicialitzar Git (sí/no)
|
|
34
|
+
6. Variant (TypeScript / Vanilla)
|
|
35
|
+
7. Framework (Express per backend, zs3-ui per frontend,
|
|
36
|
+
ambdós per fullstack)
|
|
37
|
+
8. Package manager (npm / yarn / pnpm)
|
|
38
|
+
9. Instal·lar dependències (sí/no)
|
|
39
|
+
|
|
40
|
+
Si es passen alguns arguments, el wizard només pregunta els que falten.
|
|
41
|
+
El resum i la confirmació es mostren sempre abans de crear res.
|
|
42
|
+
|
|
43
|
+
Exemples:
|
|
44
|
+
create-zs3-app
|
|
45
|
+
create-zs3-app --type backend --name my-api --variant ts --framework express --git
|
|
46
|
+
create-zs3-app --type frontend --name my-app
|
|
47
|
+
create-zs3-app --type fullstack --name my-app --variant ts --framework express-zs3 --git
|
|
48
|
+
create-zs3-app --type backend --variant ts --name test --dry-run
|
|
49
|
+
create-zs3-app --type backend --name my-api --pm yarn --install
|
|
50
|
+
`)
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function parseArgs(argv) {
|
|
54
|
+
const args = argv.slice(2)
|
|
55
|
+
const options = {}
|
|
56
|
+
|
|
57
|
+
for (let i = 0; i < args.length; i++) {
|
|
58
|
+
switch (args[i].toLowerCase()) {
|
|
59
|
+
case '-h':
|
|
60
|
+
case '--help':
|
|
61
|
+
options.help = true
|
|
62
|
+
break
|
|
63
|
+
case '--dry-run':
|
|
64
|
+
options.dryRun = true
|
|
65
|
+
break
|
|
66
|
+
case '--type':
|
|
67
|
+
options.type = args[++i].toLowerCase()
|
|
68
|
+
break
|
|
69
|
+
case '--name':
|
|
70
|
+
options.name = args[++i].toLowerCase()
|
|
71
|
+
break
|
|
72
|
+
case '--variant':
|
|
73
|
+
options.variant = args[++i].toLowerCase()
|
|
74
|
+
break
|
|
75
|
+
case '--framework':
|
|
76
|
+
options.framework = args[++i].toLowerCase()
|
|
77
|
+
break
|
|
78
|
+
case '--license':
|
|
79
|
+
options.license = args[++i].toLowerCase()
|
|
80
|
+
break
|
|
81
|
+
case '--description':
|
|
82
|
+
options.description = args[++i].toLowerCase()
|
|
83
|
+
break
|
|
84
|
+
case '--author':
|
|
85
|
+
options.author = args[++i].toLowerCase()
|
|
86
|
+
break
|
|
87
|
+
case '--git':
|
|
88
|
+
options.git = true
|
|
89
|
+
break
|
|
90
|
+
case '--no-git':
|
|
91
|
+
options.git = false
|
|
92
|
+
break
|
|
93
|
+
case '--pm':
|
|
94
|
+
options.pm = args[++i].toLowerCase()
|
|
95
|
+
break
|
|
96
|
+
case '--install':
|
|
97
|
+
options.install = true
|
|
98
|
+
break
|
|
99
|
+
case '--no-install':
|
|
100
|
+
options.install = false
|
|
101
|
+
break
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
return options
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
const options = parseArgs(process.argv)
|
|
109
|
+
|
|
110
|
+
if (options.help) {
|
|
111
|
+
showHelp()
|
|
112
|
+
process.exit(0)
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
main(options).catch((error) => {
|
|
116
|
+
console.error('Error:', error.message)
|
|
117
|
+
process.exit(1)
|
|
118
|
+
})
|