@mtldev514/retro-portfolio-engine 1.0.0
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 +408 -0
- package/bin/cli.js +103 -0
- package/engine/admin/admin.css +720 -0
- package/engine/admin/admin.html +801 -0
- package/engine/admin/admin_api.py +230 -0
- package/engine/admin/scripts/backup.sh +116 -0
- package/engine/admin/scripts/config_loader.py +180 -0
- package/engine/admin/scripts/init.sh +141 -0
- package/engine/admin/scripts/manager.py +308 -0
- package/engine/admin/scripts/restore.sh +121 -0
- package/engine/admin/scripts/server.py +41 -0
- package/engine/admin/scripts/update.sh +321 -0
- package/engine/admin/scripts/validate_json.py +62 -0
- package/engine/fonts.css +37 -0
- package/engine/index.html +190 -0
- package/engine/js/config-loader.js +370 -0
- package/engine/js/config.js +173 -0
- package/engine/js/counter.js +17 -0
- package/engine/js/effects.js +97 -0
- package/engine/js/i18n.js +68 -0
- package/engine/js/init.js +107 -0
- package/engine/js/media.js +264 -0
- package/engine/js/render.js +282 -0
- package/engine/js/router.js +133 -0
- package/engine/js/sparkle.js +123 -0
- package/engine/js/themes.js +607 -0
- package/engine/style.css +2037 -0
- package/index.js +35 -0
- package/package.json +48 -0
- package/scripts/admin.js +67 -0
- package/scripts/build.js +142 -0
- package/scripts/init.js +237 -0
- package/scripts/post-install.js +16 -0
- package/scripts/serve.js +54 -0
- package/templates/user-portfolio/.github/workflows/deploy.yml +57 -0
- package/templates/user-portfolio/config/app.json +36 -0
- package/templates/user-portfolio/config/categories.json +241 -0
- package/templates/user-portfolio/config/languages.json +15 -0
- package/templates/user-portfolio/config/media-types.json +59 -0
- package/templates/user-portfolio/data/painting.json +3 -0
- package/templates/user-portfolio/data/projects.json +3 -0
- package/templates/user-portfolio/lang/en.json +114 -0
- package/templates/user-portfolio/lang/fr.json +114 -0
package/README.md
ADDED
|
@@ -0,0 +1,408 @@
|
|
|
1
|
+
# @retro-portfolio/engine
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/@retro-portfolio/engine)
|
|
4
|
+
[](https://opensource.org/licenses/MIT)
|
|
5
|
+
|
|
6
|
+
**Site-as-a-Package** đš Un moteur de portfolio rĂ©tro que vous installez via NPM. Vous fournissez vos donnĂ©es, le package fournit tout le reste.
|
|
7
|
+
|
|
8
|
+
## đŻ Concept
|
|
9
|
+
|
|
10
|
+
Au lieu de cloner un repo complet, vous **installez un package NPM** qui contient tout le moteur (HTML, CSS, JS, admin). Vous gardez uniquement **vos données** dans votre repo.
|
|
11
|
+
|
|
12
|
+
### Avantages
|
|
13
|
+
|
|
14
|
+
â
**Un seul repo** pour l'utilisateur (juste ses données)
|
|
15
|
+
â
**Mises Ă jour faciles** via `npm update`
|
|
16
|
+
â
**Pas de merge conflicts** pour récupérer les nouvelles features
|
|
17
|
+
â
**Workflow simple** : `npm install` â `npm run build`
|
|
18
|
+
â
**Admin inclus** pour gérer le contenu visuellement
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## đ Quick Start
|
|
23
|
+
|
|
24
|
+
### Pour créer votre portfolio
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
# 1. Créer un nouveau portfolio
|
|
28
|
+
npx @retro-portfolio/engine init mon-portfolio
|
|
29
|
+
cd mon-portfolio
|
|
30
|
+
|
|
31
|
+
# 2. Installer les dépendances
|
|
32
|
+
npm install
|
|
33
|
+
|
|
34
|
+
# 3. Lancer le serveur de dev
|
|
35
|
+
npm run dev
|
|
36
|
+
|
|
37
|
+
# 4. Ouvrir http://localhost:8000
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
C'est tout ! đ
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## đŠ Installation dans un projet existant
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
npm install @retro-portfolio/engine
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Puis ajoutez les scripts dans votre `package.json` :
|
|
51
|
+
|
|
52
|
+
```json
|
|
53
|
+
{
|
|
54
|
+
"scripts": {
|
|
55
|
+
"build": "retro-portfolio build",
|
|
56
|
+
"dev": "retro-portfolio dev",
|
|
57
|
+
"admin": "retro-portfolio admin"
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## đ Structure de votre projet
|
|
65
|
+
|
|
66
|
+
AprÚs `init`, votre projet contient **uniquement vos données** :
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
mon-portfolio/
|
|
70
|
+
âââ package.json (dĂ©pendance: @retro-portfolio/engine)
|
|
71
|
+
âââ config/ (VOS configurations)
|
|
72
|
+
â âââ app.json
|
|
73
|
+
â âââ languages.json
|
|
74
|
+
â âââ categories.json
|
|
75
|
+
âââ data/ (VOTRE contenu)
|
|
76
|
+
â âââ painting.json
|
|
77
|
+
â âââ projects.json
|
|
78
|
+
âââ lang/ (VOS traductions)
|
|
79
|
+
â âââ en.json
|
|
80
|
+
â âââ fr.json
|
|
81
|
+
âââ assets/ (VOS images, etc.)
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
**Pas de code du site** dans votre repo ! Tout vient du package NPM.
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## đ ïž Commandes
|
|
89
|
+
|
|
90
|
+
### `retro-portfolio init [directory]`
|
|
91
|
+
|
|
92
|
+
Crée un nouveau portfolio avec les templates de données.
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
# Créer dans le dossier actuel
|
|
96
|
+
retro-portfolio init
|
|
97
|
+
|
|
98
|
+
# Créer dans un nouveau dossier
|
|
99
|
+
retro-portfolio init mon-portfolio
|
|
100
|
+
|
|
101
|
+
# Forcer l'écrasement
|
|
102
|
+
retro-portfolio init --force
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### `retro-portfolio build`
|
|
106
|
+
|
|
107
|
+
GénÚre le site statique en fusionnant le moteur avec vos données.
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
# Build standard
|
|
111
|
+
npm run build
|
|
112
|
+
|
|
113
|
+
# Spécifier le dossier de sortie
|
|
114
|
+
retro-portfolio build --output public
|
|
115
|
+
|
|
116
|
+
# Watch mode (rebuild automatique)
|
|
117
|
+
retro-portfolio build --watch
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
**Ce qui se passe** :
|
|
121
|
+
1. Le package copie ses fichiers engine (HTML, CSS, JS)
|
|
122
|
+
2. Il fusionne avec vos fichiers `config/`, `data/`, `lang/`
|
|
123
|
+
3. GénÚre un site complet dans `dist/`
|
|
124
|
+
|
|
125
|
+
### `retro-portfolio dev`
|
|
126
|
+
|
|
127
|
+
Lance un serveur de développement local.
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
npm run dev
|
|
131
|
+
|
|
132
|
+
# Port personnalisé
|
|
133
|
+
retro-portfolio dev --port 3000
|
|
134
|
+
|
|
135
|
+
# Ouvrir automatiquement le navigateur
|
|
136
|
+
retro-portfolio dev --open
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### `retro-portfolio admin`
|
|
140
|
+
|
|
141
|
+
Lance l'interface d'administration pour gérer votre contenu.
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
npm run admin
|
|
145
|
+
|
|
146
|
+
# Port personnalisé
|
|
147
|
+
retro-portfolio admin --port 5001
|
|
148
|
+
|
|
149
|
+
# Ouvrir automatiquement le navigateur
|
|
150
|
+
retro-portfolio admin --open
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
**Interface admin** : Ajoutez/modifiez votre contenu visuellement, uploadez des images, gérez les traductions.
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## đ Workflow Complet
|
|
158
|
+
|
|
159
|
+
### 1ïžâŁ Setup initial
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
npx @retro-portfolio/engine init mon-portfolio
|
|
163
|
+
cd mon-portfolio
|
|
164
|
+
npm install
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### 2ïžâŁ Configuration
|
|
168
|
+
|
|
169
|
+
Ăditez vos fichiers de config :
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
# Configurez votre site
|
|
173
|
+
nano config/app.json
|
|
174
|
+
|
|
175
|
+
# Ajoutez vos catégories
|
|
176
|
+
nano config/categories.json
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### 3ïžâŁ Ajout de contenu
|
|
180
|
+
|
|
181
|
+
**Option A** : Via l'admin (recommandé)
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
npm run admin
|
|
185
|
+
# Ouvrir http://localhost:5001/admin.html
|
|
186
|
+
# Upload images, ajouter descriptions, etc.
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
**Option B** : Ădition manuelle JSON
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
nano data/painting.json
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### 4ïžâŁ Preview local
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
npm run dev
|
|
199
|
+
# Ouvrir http://localhost:8000
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### 5ïžâŁ Build pour production
|
|
203
|
+
|
|
204
|
+
```bash
|
|
205
|
+
npm run build
|
|
206
|
+
# â gĂ©nĂšre dist/
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### 6ïžâŁ DĂ©ploiement
|
|
210
|
+
|
|
211
|
+
**GitHub Pages** :
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
# Pusher le dossier dist/ sur la branche gh-pages
|
|
215
|
+
git add dist -f
|
|
216
|
+
git commit -m "Deploy"
|
|
217
|
+
git subtree push --prefix dist origin gh-pages
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
Ou utilisez la GitHub Action fournie (voir section Déploiement).
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
## đš Personnalisation
|
|
225
|
+
|
|
226
|
+
### Ajouter un thĂšme custom
|
|
227
|
+
|
|
228
|
+
Créez `assets/custom-theme.css` :
|
|
229
|
+
|
|
230
|
+
```css
|
|
231
|
+
:root {
|
|
232
|
+
--primary-color: #your-color;
|
|
233
|
+
--font-family: 'Your-Font', monospace;
|
|
234
|
+
}
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
Le build l'inclura automatiquement !
|
|
238
|
+
|
|
239
|
+
### Ajouter des pages custom
|
|
240
|
+
|
|
241
|
+
Créez `pages/about.html` dans votre projet. Le moteur le détectera au build.
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
## đ Mettre Ă jour le moteur
|
|
246
|
+
|
|
247
|
+
Pour récupérer les derniÚres features du moteur :
|
|
248
|
+
|
|
249
|
+
```bash
|
|
250
|
+
npm update @retro-portfolio/engine
|
|
251
|
+
|
|
252
|
+
# Ou version spécifique
|
|
253
|
+
npm install @retro-portfolio/engine@latest
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
**Aucun conflit de merge** ! Vos données restent intactes.
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## đ DĂ©ploiement
|
|
261
|
+
|
|
262
|
+
### GitHub Pages (automatique)
|
|
263
|
+
|
|
264
|
+
Créez `.github/workflows/deploy.yml` :
|
|
265
|
+
|
|
266
|
+
```yaml
|
|
267
|
+
name: Deploy to GitHub Pages
|
|
268
|
+
|
|
269
|
+
on:
|
|
270
|
+
push:
|
|
271
|
+
branches: [main]
|
|
272
|
+
|
|
273
|
+
jobs:
|
|
274
|
+
deploy:
|
|
275
|
+
runs-on: ubuntu-latest
|
|
276
|
+
steps:
|
|
277
|
+
- uses: actions/checkout@v3
|
|
278
|
+
- uses: actions/setup-node@v3
|
|
279
|
+
with:
|
|
280
|
+
node-version: '18'
|
|
281
|
+
|
|
282
|
+
- run: npm install
|
|
283
|
+
- run: npm run build
|
|
284
|
+
|
|
285
|
+
- uses: peaceiris/actions-gh-pages@v3
|
|
286
|
+
with:
|
|
287
|
+
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
288
|
+
publish_dir: ./dist
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
Push sur `main` â Site dĂ©ployĂ© automatiquement ! âš
|
|
292
|
+
|
|
293
|
+
### Netlify / Vercel
|
|
294
|
+
|
|
295
|
+
**Build command** : `npm run build`
|
|
296
|
+
**Publish directory** : `dist`
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
## đ Documentation AvancĂ©e
|
|
301
|
+
|
|
302
|
+
### Structure du package
|
|
303
|
+
|
|
304
|
+
```
|
|
305
|
+
@retro-portfolio/engine/
|
|
306
|
+
âââ engine/ (Code du site - copiĂ© au build)
|
|
307
|
+
â âââ index.html
|
|
308
|
+
â âââ style.css
|
|
309
|
+
â âââ js/
|
|
310
|
+
â âââ admin/
|
|
311
|
+
âââ scripts/ (Scripts Node.js)
|
|
312
|
+
â âââ build.js
|
|
313
|
+
â âââ serve.js
|
|
314
|
+
â âââ admin.js
|
|
315
|
+
âââ bin/
|
|
316
|
+
â âââ cli.js (CLI retro-portfolio)
|
|
317
|
+
âââ templates/ (Templates pour init)
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
### API de données
|
|
321
|
+
|
|
322
|
+
Format des fichiers JSON :
|
|
323
|
+
|
|
324
|
+
**data/painting.json** :
|
|
325
|
+
```json
|
|
326
|
+
{
|
|
327
|
+
"items": [
|
|
328
|
+
{
|
|
329
|
+
"id": "unique-id",
|
|
330
|
+
"title": {
|
|
331
|
+
"en": "Sunset",
|
|
332
|
+
"fr": "Coucher de soleil"
|
|
333
|
+
},
|
|
334
|
+
"description": {
|
|
335
|
+
"en": "A beautiful sunset",
|
|
336
|
+
"fr": "Un magnifique coucher de soleil"
|
|
337
|
+
},
|
|
338
|
+
"image": "https://cloudinary.com/...",
|
|
339
|
+
"date": "2026-01-15"
|
|
340
|
+
}
|
|
341
|
+
]
|
|
342
|
+
}
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
**lang/en.json** :
|
|
346
|
+
```json
|
|
347
|
+
{
|
|
348
|
+
"header_title": "My Portfolio",
|
|
349
|
+
"nav_painting": "Paintings",
|
|
350
|
+
"footer_copy": "© 2026 Your Name"
|
|
351
|
+
}
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
---
|
|
355
|
+
|
|
356
|
+
## đ DĂ©pannage
|
|
357
|
+
|
|
358
|
+
### Le build échoue
|
|
359
|
+
|
|
360
|
+
```bash
|
|
361
|
+
# Vérifier que les dossiers requis existent
|
|
362
|
+
ls -la config/ data/ lang/
|
|
363
|
+
|
|
364
|
+
# Réinstaller le package
|
|
365
|
+
rm -rf node_modules
|
|
366
|
+
npm install
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
### L'admin ne démarre pas
|
|
370
|
+
|
|
371
|
+
L'admin nécessite Python 3 et Flask :
|
|
372
|
+
|
|
373
|
+
```bash
|
|
374
|
+
pip install flask flask-cors
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
### Les images ne s'affichent pas
|
|
378
|
+
|
|
379
|
+
Vérifiez que vos URLs d'images sont complÚtes (Cloudinary, etc.) ou placez-les dans `assets/`.
|
|
380
|
+
|
|
381
|
+
---
|
|
382
|
+
|
|
383
|
+
## đ€ Contribution
|
|
384
|
+
|
|
385
|
+
Ce package est open source ! Pour contribuer :
|
|
386
|
+
|
|
387
|
+
1. Fork le repo [retro-portfolio-engine](https://github.com/YOUR_USERNAME/retro-portfolio-engine)
|
|
388
|
+
2. Créez une branche feature
|
|
389
|
+
3. Soumettez une Pull Request
|
|
390
|
+
|
|
391
|
+
---
|
|
392
|
+
|
|
393
|
+
## đ Licence
|
|
394
|
+
|
|
395
|
+
MIT © Alex
|
|
396
|
+
|
|
397
|
+
---
|
|
398
|
+
|
|
399
|
+
## đ Liens
|
|
400
|
+
|
|
401
|
+
- [Documentation](https://github.com/YOUR_USERNAME/retro-portfolio-engine)
|
|
402
|
+
- [NPM Package](https://www.npmjs.com/package/@retro-portfolio/engine)
|
|
403
|
+
- [Issues](https://github.com/YOUR_USERNAME/retro-portfolio-engine/issues)
|
|
404
|
+
- [Exemples](https://github.com/YOUR_USERNAME/retro-portfolio-examples)
|
|
405
|
+
|
|
406
|
+
---
|
|
407
|
+
|
|
408
|
+
**Fait avec đ pour la communautĂ© crĂ©ative**
|
package/bin/cli.js
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Retro Portfolio CLI
|
|
5
|
+
* Main command-line interface for the package
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
const { Command } = require('commander');
|
|
9
|
+
const chalk = require('chalk');
|
|
10
|
+
const path = require('path');
|
|
11
|
+
const fs = require('fs-extra');
|
|
12
|
+
|
|
13
|
+
const program = new Command();
|
|
14
|
+
|
|
15
|
+
// Import scripts
|
|
16
|
+
const build = require('../scripts/build');
|
|
17
|
+
const serve = require('../scripts/serve');
|
|
18
|
+
const admin = require('../scripts/admin');
|
|
19
|
+
const init = require('../scripts/init');
|
|
20
|
+
|
|
21
|
+
program
|
|
22
|
+
.name('retro-portfolio')
|
|
23
|
+
.description('Retro Portfolio Site Engine')
|
|
24
|
+
.version(require('../package.json').version);
|
|
25
|
+
|
|
26
|
+
// Init command - Create new portfolio
|
|
27
|
+
program
|
|
28
|
+
.command('init [directory]')
|
|
29
|
+
.description('Initialize a new portfolio with data templates')
|
|
30
|
+
.option('-f, --force', 'Overwrite existing files')
|
|
31
|
+
.action(async (directory, options) => {
|
|
32
|
+
try {
|
|
33
|
+
await init(directory || '.', options);
|
|
34
|
+
} catch (error) {
|
|
35
|
+
console.error(chalk.red('Error:'), error.message);
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
// Build command - Generate static site
|
|
41
|
+
program
|
|
42
|
+
.command('build')
|
|
43
|
+
.description('Build the static site from your data')
|
|
44
|
+
.option('-o, --output <dir>', 'Output directory', 'dist')
|
|
45
|
+
.option('-w, --watch', 'Watch for changes and rebuild')
|
|
46
|
+
.action(async (options) => {
|
|
47
|
+
try {
|
|
48
|
+
await build(options);
|
|
49
|
+
} catch (error) {
|
|
50
|
+
console.error(chalk.red('Error:'), error.message);
|
|
51
|
+
process.exit(1);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
// Serve command - Local development server
|
|
56
|
+
program
|
|
57
|
+
.command('dev')
|
|
58
|
+
.alias('serve')
|
|
59
|
+
.description('Start local development server')
|
|
60
|
+
.option('-p, --port <number>', 'Port number', '8000')
|
|
61
|
+
.option('-o, --open', 'Open browser automatically')
|
|
62
|
+
.action(async (options) => {
|
|
63
|
+
try {
|
|
64
|
+
await serve(options);
|
|
65
|
+
} catch (error) {
|
|
66
|
+
console.error(chalk.red('Error:'), error.message);
|
|
67
|
+
process.exit(1);
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
// Admin command - Launch admin interface
|
|
72
|
+
program
|
|
73
|
+
.command('admin')
|
|
74
|
+
.description('Start admin interface for managing content')
|
|
75
|
+
.option('-p, --port <number>', 'Port number', '5001')
|
|
76
|
+
.option('-o, --open', 'Open browser automatically')
|
|
77
|
+
.action(async (options) => {
|
|
78
|
+
try {
|
|
79
|
+
await admin(options);
|
|
80
|
+
} catch (error) {
|
|
81
|
+
console.error(chalk.red('Error:'), error.message);
|
|
82
|
+
process.exit(1);
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
// Deploy command - Deploy to GitHub Pages
|
|
87
|
+
program
|
|
88
|
+
.command('deploy')
|
|
89
|
+
.description('Deploy site to GitHub Pages')
|
|
90
|
+
.option('-b, --branch <name>', 'Deployment branch', 'gh-pages')
|
|
91
|
+
.option('-d, --dir <path>', 'Build directory', 'dist')
|
|
92
|
+
.action(async (options) => {
|
|
93
|
+
console.log(chalk.yellow('Deploy command coming soon!'));
|
|
94
|
+
console.log('For now, use GitHub Actions or push dist/ manually.');
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
// Parse arguments
|
|
98
|
+
program.parse(process.argv);
|
|
99
|
+
|
|
100
|
+
// Show help if no command provided
|
|
101
|
+
if (!process.argv.slice(2).length) {
|
|
102
|
+
program.outputHelp();
|
|
103
|
+
}
|