angular-generate 2.2.1 → 2.2.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.
Files changed (2) hide show
  1. package/README.md +560 -91
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -1,149 +1,618 @@
1
1
  # AngularGenerate
2
- **AngularGenerate** vous permet de générer une application Angular complète en quelques clics.
3
- **Votre projet** sera composé de:
4
- - Frontend (Angular) → Généré avec la bibliothèque **AngularGenerate** ( https://www.npmjs.com/package/angular-generate)
5
- - Backend (LARAVEL) → Généré automatiquement à partir d'une base de données avec **ControllerGenerate** ( https://packagist.org/packages/saloum45/controllergenerate )
6
2
 
3
+ **AngularGenerate** est un package Angular qui permet de générer automatiquement une application Angular complète à partir d'un fichier de configuration.
7
4
 
8
- ## Mise en place du Frontend (Angular) avec AngularGenerate
9
- ### Prérequis
10
- - Créez un fichier **JSON** dans la racine du projet nommé **config.json** avec le contenu suivant
11
- - Vous pouvez copier le contenu complet adapté à votre projet directement depuis votre **Backend (PHP) généré par ControllerGenerate**
12
- ```
13
- {
14
- "projectName": "projet1.angular",// nom de votre projet angular
15
- "decription": "Fichier de configuration de config",
16
- "config_base_url": "http://localhost/8000",// emplacement de ControllerGenerate (plus d'informations https://packagist.org/packages/saloum45/controllergenerate)
17
- "les_modules": [// tous les modules à générer
18
- {
19
- "module": "home",
20
- "les_tables": [
21
- // ici les configuration des tables à générer pour le module home
22
- ]
23
- },
24
- {
25
- "module": "public",
26
- "les_tables": [
27
- // ici les configuration des tables à générer pour le module public
28
- ]
29
- }
30
- ]
31
- }
32
- ```
33
- - Installer la présente bibliothèque **angular-generate**
34
- ```
5
+ Il permet notamment de générer les **modules, routes, composants, formulaires, listes, pages de détails et interfaces d'authentification** à partir des tables définies dans votre configuration.
6
+
7
+ AngularGenerate peut fonctionner avec un backend Laravel généré automatiquement grâce au package **ControllerGenerate**.
8
+
9
+ #### Packages utilisés :
10
+
11
+ * Frontend : **AngularGenerate**
12
+ * Backend : **ControllerGenerate**
13
+
14
+ ---
15
+
16
+ ## Comment ça marche 👉🏽😇
17
+
18
+ AngularGenerate fonctionne à partir d'un fichier **`config.json`** contenant la configuration de votre application.
19
+
20
+ Le principe est simple :
21
+
22
+ 1. Vous créez votre backend Laravel avec **ControllerGenerate**.
23
+ 2. ControllerGenerate génère les modèles, migrations, contrôleurs, routes et relations.
24
+ 3. Vous récupérez la configuration générée par le backend.
25
+ 4. Vous placez cette configuration dans votre projet Angular.
26
+ 5. AngularGenerate utilise cette configuration pour générer automatiquement le frontend.
27
+ 6. Les composants Angular sont générés en fonction des modules et des tables définis dans `config.json`.
28
+
29
+ Vous pouvez ainsi partir d'une base de données et obtenir rapidement une structure complète **Backend Laravel + Frontend Angular**.
30
+
31
+ ---
32
+
33
+ # Prérequis
34
+
35
+ Avant d'utiliser AngularGenerate, assurez-vous d'avoir installé :
36
+
37
+ * **Node.js**
38
+ * **npm**
39
+ * **Angular CLI**
40
+ * Un projet Angular
41
+ * Un backend Laravel utilisant **ControllerGenerate**
42
+
43
+ ---
44
+
45
+ # Installation
46
+
47
+ ## 2️⃣ Installer AngularGenerate
48
+
49
+ Installez le package avec npm :
50
+
51
+ ```bash
35
52
  npm install angular-generate
36
53
  ```
37
- - Installer la bibliothèque **@auth0/angular-jwt**
38
- ```
54
+
55
+ Le package est disponible sur npm :
56
+
57
+ https://www.npmjs.com/package/angular-generate
58
+
59
+ ---
60
+
61
+ ## 3️⃣ Installer Angular JWT
62
+
63
+ AngularGenerate utilise `@auth0/angular-jwt` pour la gestion du token d'authentification.
64
+
65
+ ```bash
39
66
  npm install @auth0/angular-jwt
40
67
  ```
41
- - Installer la ng-select **@ng-select/ng-select**
42
- Attention à la compatibilté de la version de Angular avec la version de ng-select, par exemple :
43
- Angular ng-select
44
- >=20.0.0 <21.0.0 v15.x
45
- >=19.0.0 <20.0.0 v14.x
46
- >=18.0.0 <19.0.0 v13.x
47
- >=17.0.0 <18.0.0 v12.x
48
- voir documention officielle https://www.npmjs.com/package/@ng-select/ng-select
49
- ```
68
+
69
+ ---
70
+
71
+ ## 4️⃣ Installer NG-Select
72
+
73
+ Installez `@ng-select/ng-select` :
74
+
75
+ ```bash
50
76
  npm install @ng-select/ng-select
51
77
  ```
52
- Importez NG-Select styles avec l'aide du fichier **style.css** ou **style.scss**
53
- ```
54
- // Importing NG-Select styles
55
- @import url(../node_modules/@ng-select/ng-select/themes/default.theme.css);
56
- ```
57
- - Installer la bibliothèque **SweetAlert2** pour les notifications
78
+
79
+ ### Compatibilité Angular / NG-Select
80
+
81
+ Veillez à utiliser une version compatible avec votre version d'Angular :
82
+
83
+ | Angular | NG-Select |
84
+ | ------------------ | --------- |
85
+ | `>=20.0.0 <21.0.0` | `v15.x` |
86
+ | `>=19.0.0 <20.0.0` | `v14.x` |
87
+ | `>=18.0.0 <19.0.0` | `v13.x` |
88
+ | `>=17.0.0 <18.0.0` | `v12.x` |
89
+
90
+ Documentation officielle :
91
+
92
+ https://www.npmjs.com/package/@ng-select/ng-select
93
+
94
+ ### Importer les styles NG-Select
95
+
96
+ Dans votre fichier `style.css` ou `style.scss` :
97
+
98
+ ```scss
99
+ /* Importing NG-Select styles */
100
+ @import url('../node_modules/@ng-select/ng-select/themes/default.theme.css');
58
101
  ```
102
+
103
+ ---
104
+
105
+ ## 5️⃣ Installer SweetAlert2
106
+
107
+ SweetAlert2 est utilisé pour afficher des notifications et des messages interactifs.
108
+
109
+ ```bash
59
110
  npm install sweetalert2
60
111
  ```
61
- - Installer la bibliothèque **ng-bootstrap** (https://ng-bootstrap.github.io)
62
- ```
112
+
113
+ ---
114
+
115
+ ## 6️⃣ Installer ng-bootstrap
116
+
117
+ Installez `ng-bootstrap` :
118
+
119
+ ```bash
63
120
  ng add @ng-bootstrap/ng-bootstrap
64
121
  ```
65
- - Installer la bibliothèque **bootstrap && bootstrap-icons**
66
- ```
122
+
123
+ Documentation :
124
+
125
+ https://ng-bootstrap.github.io
126
+
127
+ ---
128
+
129
+ ## 7️⃣ Installer Bootstrap et Bootstrap Icons
130
+
131
+ ```bash
67
132
  npm install bootstrap bootstrap-icons
68
133
  ```
69
- - Importez bootstrap (CSS && JS) avec l'aide du fichier **style.css** ou **style.scss**
70
- ```
71
- /* Importing Bootstrap CSS file. */
134
+
135
+ Puis importez les styles dans `style.css` ou `style.scss` :
136
+
137
+ ```scss
138
+ /* Importing Bootstrap CSS */
72
139
  @import 'bootstrap/dist/css/bootstrap.css';
73
- // Importing bootstrap icons
140
+
141
+ /* Importing Bootstrap Icons */
74
142
  @import 'bootstrap-icons/font/bootstrap-icons.css';
75
- // Importing NG-Select styles
76
- @import url(../node_modules/@ng-select/ng-select/themes/default.theme.css);
143
+
144
+ /* Importing NG-Select styles */
145
+ @import url('../node_modules/@ng-select/ng-select/themes/default.theme.css');
146
+ ```
147
+
148
+ ---
149
+
150
+ # Configuration
151
+
152
+ ## 1️⃣ Créer le fichier `config.json`
153
+
154
+ Créez un fichier nommé :
155
+
156
+ ```text
157
+ config.json
158
+ ```
159
+
160
+ à la racine de votre projet Angular.
161
+
162
+ Ce fichier contient la configuration utilisée par AngularGenerate pour savoir **quels modules et quelles tables doivent être générés**.
163
+
164
+ Exemple :
165
+
166
+ ```json
167
+ {
168
+ "projectName": "projet1.angular",
169
+ "description": "Fichier de configuration de AngularGenerate",
170
+ "config_base_url": "http://localhost:8000",
171
+ "les_modules": [
172
+ {
173
+ "module": "home",
174
+ "les_tables": []
175
+ },
176
+ {
177
+ "module": "public",
178
+ "les_tables": []
179
+ }
180
+ ]
181
+ }
77
182
  ```
78
183
 
79
- - Configurer le **HttpClient** dans le module principal **app.config.ts**
184
+ ### `projectName`
185
+
186
+ Nom du projet Angular :
187
+
188
+ ```json
189
+ "projectName": "projet1.angular"
80
190
  ```
81
- .......................................................
191
+
192
+ ### `config_base_url`
193
+
194
+ URL de votre backend Laravel :
195
+
196
+ ```json
197
+ "config_base_url": "http://localhost:8000"
198
+ ```
199
+
200
+ Cette URL correspond à l'application Laravel utilisant **ControllerGenerate**.
201
+
202
+ ### `les_modules`
203
+
204
+ Cette propriété contient les différents modules de votre application.
205
+
206
+ ```json
207
+ "les_modules": [
208
+ {
209
+ "module": "home",
210
+ "les_tables": []
211
+ },
212
+ {
213
+ "module": "public",
214
+ "les_tables": []
215
+ }
216
+ ]
217
+ ```
218
+
219
+ Chaque module peut contenir plusieurs tables.
220
+
221
+ ---
222
+
223
+ # Configuration depuis ControllerGenerate
224
+
225
+ L'un des objectifs d'AngularGenerate est de pouvoir fonctionner directement avec un backend généré par **ControllerGenerate**.
226
+
227
+ Vous pouvez donc récupérer la configuration nécessaire directement depuis votre backend Laravel.
228
+
229
+ Le backend contient les informations permettant à AngularGenerate de connaître :
230
+
231
+ * les modèles ;
232
+ * les tables ;
233
+ * les attributs ;
234
+ * les relations ;
235
+ * les clés étrangères ;
236
+ * les informations nécessaires à la génération du frontend.
237
+
238
+ Cela permet d'éviter de reconstruire manuellement toute la configuration côté Angular.
239
+
240
+ ---
241
+
242
+ # Configuration de HttpClient
243
+
244
+ AngularGenerate utilise `HttpClient` pour communiquer avec l'API Laravel.
245
+
246
+ Dans votre fichier :
247
+
248
+ ```text
249
+ app.config.ts
250
+ ```
251
+
252
+ ajoutez `provideHttpClient()`.
253
+
254
+ Exemple :
255
+
256
+ ```typescript
257
+ import { ApplicationConfig } from '@angular/core';
82
258
  import { provideHttpClient } from '@angular/common/http';
83
259
  import { provideRouter, withHashLocation } from '@angular/router';
84
260
 
261
+ import { routes } from './app.routes';
262
+
85
263
  export const appConfig: ApplicationConfig = {
86
- providers: [provideRouter(routes, withHashLocation()), provideClientHydration(),provideHttpClient()]
264
+ providers: [
265
+ provideRouter(routes, withHashLocation()),
266
+ provideHttpClient()
267
+ ]
87
268
  };
88
269
  ```
89
270
 
90
- ### Générer complètement l'application
91
- ```
271
+ ---
272
+
273
+ # Génération de l'application
274
+
275
+ Une fois la configuration terminée, AngularGenerate permet de générer automatiquement votre application.
276
+
277
+ ## 1️⃣ Générer complètement l'application
278
+
279
+ Pour générer tous les modules et composants définis dans `config.json` :
280
+
281
+ ```bash
92
282
  ng generate angular-generate:config
93
283
  ```
94
- ### générer un module
95
- Supposons que nous voulons générer le module **public** avec tous ses composants, nous lançons la commande suivante
284
+
285
+ Cette commande analyse votre configuration et génère automatiquement les éléments nécessaires.
286
+
287
+ ---
288
+
289
+ # Générer un module spécifique
290
+
291
+ Supposons que votre configuration contient un module :
292
+
293
+ ```text
294
+ public
96
295
  ```
296
+
297
+ avec plusieurs tables.
298
+
299
+ Pour générer uniquement ce module :
300
+
301
+ ```bash
97
302
  ng generate angular-generate:config --module public
98
303
  ```
99
- ### générer les composants d'une seule table
100
- Supposons que nous voulons générer tous les composants de la table agent, nous lançons la commande suivante
304
+
305
+ AngularGenerate génère alors les composants associés au module `public`.
306
+
307
+ ---
308
+
309
+ # Générer les composants d'une table
310
+
311
+ Supposons que votre configuration contient une table :
312
+
313
+ ```text
314
+ agent
101
315
  ```
316
+
317
+ Pour générer tous les composants associés à cette table :
318
+
319
+ ```bash
102
320
  ng generate angular-generate:config --table agent
103
321
  ```
104
- ### générer un composant d'une table
105
- Supposons que nous voulons générer le composant qui liste tous les enregistrements de la table agent, nous lançons la commande suivante
322
+
323
+ AngularGenerate génère alors les différents composants disponibles pour cette table.
324
+
325
+ ---
326
+
327
+ # Générer un composant spécifique
328
+
329
+ Vous pouvez également générer uniquement un type de composant.
330
+
331
+ Par exemple, pour générer la liste des agents :
332
+
333
+ ```bash
334
+ ng generate angular-generate:config --table agent --type list
335
+ ```
336
+
337
+ ---
338
+
339
+ # Types de composants disponibles
340
+
341
+ AngularGenerate permet de générer plusieurs types de composants.
342
+
343
+ ### `list`
344
+
345
+ Affiche la liste des enregistrements d'une table.
346
+
347
+ ```bash
348
+ --type list
349
+ ```
350
+
351
+ ---
352
+
353
+ ### `add`
354
+
355
+ Génère le formulaire permettant d'ajouter un nouvel enregistrement.
356
+
357
+ ```bash
358
+ --type add
359
+ ```
360
+
361
+ ---
362
+
363
+ ### `edit`
364
+
365
+ Génère le formulaire permettant de modifier un enregistrement existant.
366
+
367
+ ```bash
368
+ --type edit
369
+ ```
370
+
371
+ ---
372
+
373
+ ### `details`
374
+
375
+ Génère la page permettant d'afficher les détails d'un enregistrement.
376
+
377
+ ```bash
378
+ --type details
379
+ ```
380
+
381
+ ---
382
+
383
+ ### `login`
384
+
385
+ Génère le formulaire de connexion à l'application.
386
+
387
+ ```bash
388
+ --type login
389
+ ```
390
+
391
+ ---
392
+
393
+ ### `deconnexion`
394
+
395
+ Génère la page permettant de gérer la déconnexion de l'utilisateur.
396
+
397
+ ```bash
398
+ --type deconnexion
399
+ ```
400
+
401
+ ---
402
+
403
+ ### `not-found`
404
+
405
+ Génère la page affichée lorsqu'une route demandée n'existe pas.
406
+
407
+ ```bash
408
+ --type not-found
409
+ ```
410
+
411
+ ---
412
+
413
+ # Exemple d'utilisation
414
+
415
+ Supposons que nous avons une table :
416
+
417
+ ```text
418
+ agent
106
419
  ```
420
+
421
+ Nous pouvons générer :
422
+
423
+ ### Liste des agents
424
+
425
+ ```bash
107
426
  ng generate angular-generate:config --table agent --type list
108
427
  ```
109
- ### NB: Les types de composant disponibles
110
- - **list** : liste tous les enregistrements de la table
111
- - **add** : formulaire d'ajout de la table
112
- - **edit** : formulaire de modification de la table
113
- - **details** : affiche les details d'un enregistrement de la table
114
- - **login** : formulaire de connexion
115
- - **deconnexion** : page de déconnexion à l'application
116
- - **not-found** : si la page demandée est introuvable
117
428
 
118
- ### Exemple de configuration de app.route.ts
429
+ ### Formulaire d'ajout
430
+
431
+ ```bash
432
+ ng generate angular-generate:config --table agent --type add
119
433
  ```
434
+
435
+ ### Formulaire de modification
436
+
437
+ ```bash
438
+ ng generate angular-generate:config --table agent --type edit
439
+ ```
440
+
441
+ ### Détails d'un agent
442
+
443
+ ```bash
444
+ ng generate angular-generate:config --table agent --type details
445
+ ```
446
+
447
+ ---
448
+
449
+ # Gestion des routes
450
+
451
+ AngularGenerate génère également la structure nécessaire à la navigation entre les différents modules.
452
+
453
+ Exemple de fichier `app.routes.ts` :
454
+
455
+ ```typescript
120
456
  import { Routes } from '@angular/router';
457
+
121
458
  import { HomeComponent } from './home/home/home.component';
122
- import { AuthGuard } from './guard/auth/auth.guard';
123
459
  import { PublicComponent } from './public/public/public.component';
460
+ import { AuthGuard } from './guard/auth/auth.guard';
124
461
 
125
462
  export const routes: Routes = [
126
- { path: "", pathMatch: "full", redirectTo: "public" },
463
+
127
464
  {
128
- path: "home",
465
+ path: '',
466
+ pathMatch: 'full',
467
+ redirectTo: 'public'
468
+ },
469
+
470
+ {
471
+ path: 'home',
129
472
  component: HomeComponent,
473
+ canActivate: [AuthGuard],
130
474
  children: [
131
475
  {
132
- path: "",
133
- loadChildren: () => import("./home/home.module").then((m) => m.HomeModule)
476
+ path: '',
477
+ loadChildren: () =>
478
+ import('./home/home.module')
479
+ .then((m) => m.HomeModule)
134
480
  }
135
- ],
136
- canActivate: [AuthGuard]
481
+ ]
137
482
  },
483
+
138
484
  {
139
- path: "public",
485
+ path: 'public',
140
486
  component: PublicComponent,
141
487
  children: [
142
488
  {
143
- path: "",
144
- loadChildren: () => import("./public/public.module").then((m) => m.PublicModule)
489
+ path: '',
490
+ loadChildren: () =>
491
+ import('./public/public.module')
492
+ .then((m) => m.PublicModule)
145
493
  }
146
- ],
147
- },
494
+ ]
495
+ }
496
+
148
497
  ];
149
- ```
498
+ ```
499
+
500
+ ---
501
+
502
+ # Exemple d'architecture générée
503
+
504
+ Après génération, votre application peut notamment être organisée de cette manière :
505
+
506
+ ```text
507
+ src/
508
+ ├── app/
509
+ │ ├── home/
510
+ │ │ ├── home/
511
+ │ │ ├── agent/
512
+ │ │ ├── client/
513
+ │ │ └── home.module.ts
514
+ │ │
515
+ │ ├── public/
516
+ │ │ ├── public/
517
+ │ │ ├── login/
518
+ │ │ ├── agent/
519
+ │ │ └── public.module.ts
520
+ │ │
521
+ │ ├── guard/
522
+ │ │ └── auth/
523
+ │ │
524
+ │ ├── app.config.ts
525
+ │ └── app.routes.ts
526
+ │
527
+ ├── assets/
528
+ │
529
+ ├── styles.scss
530
+ │
531
+ └── config.json
532
+ ```
533
+
534
+ La structure exacte peut varier en fonction de la configuration de votre application.
535
+
536
+ ---
537
+
538
+ # Utilisation avec ControllerGenerate
539
+
540
+ AngularGenerate a été pensé pour fonctionner avec un backend Laravel généré automatiquement.
541
+
542
+ Le fonctionnement global est donc :
543
+
544
+ ```text
545
+ BASE DE DONNÉES
546
+ │
547
+ ▼
548
+ ControllerGenerate
549
+ │
550
+ ┌─────────────┼─────────────┐
551
+ ▼ ▼ ▼
552
+ Models Controllers Routes
553
+ │
554
+ ▼
555
+ Configuration
556
+ │
557
+ ▼
558
+ AngularGenerate
559
+ │
560
+ ▼
561
+ Application Angular
562
+ │
563
+ ┌─────┼─────┐
564
+ ▼ ▼ ▼
565
+ Lists Forms Details
566
+ ```
567
+
568
+ Cette approche permet de réduire considérablement le temps nécessaire pour mettre en place une application CRUD complète.
569
+
570
+ ---
571
+
572
+ # Résultat attendu
573
+
574
+ Après l'utilisation d'AngularGenerate, vous disposez automatiquement d'une base Angular contenant notamment :
575
+
576
+ * **Modules** générés automatiquement ;
577
+ * **Routes** ;
578
+ * **Composants CRUD** ;
579
+ * **Listes** ;
580
+ * **Formulaires d'ajout** ;
581
+ * **Formulaires de modification** ;
582
+ * **Pages de détails** ;
583
+ * **Authentification** ;
584
+ * **Déconnexion** ;
585
+ * **Page 404 / Not Found** ;
586
+ * Gestion des **relations entre tables** ;
587
+ * Communication avec votre **API Laravel**.
588
+
589
+ ---
590
+
591
+ # Packages associés
592
+
593
+ ### ControllerGenerate
594
+
595
+ Package Laravel permettant de générer automatiquement :
596
+
597
+ * Controllers ;
598
+ * Migrations ;
599
+ * Routes ;
600
+ * Relations ;
601
+ * CRUD ;
602
+ * Authentification.
603
+
604
+ Documentation :
605
+
606
+ https://packagist.org/packages/saloum45/controllergenerate
607
+
608
+ ### AngularGenerate
609
+
610
+ Package Angular permettant de générer automatiquement le frontend à partir d'une configuration.
611
+
612
+ Documentation et installation :
613
+
614
+ https://www.npmjs.com/package/angular-generate
615
+
616
+ ---
617
+
618
+ ## Bon code 🧑🏽‍💻 Salem DEV 👈🏽 fait avec beaucoup de ❤️ et ☕️
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "angular-generate",
3
- "version": "2.2.1",
3
+ "version": "2.2.2",
4
4
  "description": "Générateur de composant et code Angular à partir du fichier de configuration config.json",
5
5
  "scripts": {
6
6
  "build": "tsc -p tsconfig.json",