@configjs/cli 1.1.4 → 1.1.5

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.fr.md CHANGED
@@ -359,7 +359,7 @@ Les contributions sont les bienvenues ! Consultez [CONTRIBUTING.md](./docs/CONTR
359
359
 
360
360
  ### Développer un Plugin
361
361
 
362
- Voir [PLUGIN_DEVELOPMENT.md](./docs/PLUGIN_DEVELOPMENT.md) pour créer vos propres plugins.
362
+ Voir [PLUGIN_DEVELOPMENT.md](./docs/PLUGIN_DEVELOPMENT.md) pour créer vos propres plugins (documentation de développement).
363
363
 
364
364
  ### Configuration de Développement
365
365
 
package/README.md CHANGED
@@ -61,6 +61,12 @@ cd your-nextjs-project
61
61
  npx @configjs/cli nextjs
62
62
  ```
63
63
 
64
+ ### For Vue.js Projects
65
+ ```bash
66
+ cd your-vue-project
67
+ npx @configjs/cli vue
68
+ ```
69
+
64
70
  That's it! ConfigJS will:
65
71
  1. 🔍 **Detect** your environment (React/Next.js version, TypeScript, bundler)
66
72
  2. 🎯 **Guide** you through library selection by category
@@ -298,7 +304,15 @@ ConfigJS fully supports Next.js projects with automatic detection of:
298
304
  - Next.js-specific plugins (Image Optimization, Font Optimization, Middleware, API Routes)
299
305
  - Compatible libraries adapted for Next.js (TailwindCSS, Shadcn/ui, React Hot Toast)
300
306
 
301
- See [Next.js Documentation](./DOCUMENTATION/NEXTJS.md) for complete guide.
307
+ ### Vue.js Support
308
+
309
+ ConfigJS fully supports Vue.js 3 projects with automatic detection of:
310
+ - **Composition API** vs **Options API**
311
+ - Vue.js-specific plugins (Vue Router, Pinia, VueUse, Vuetify)
312
+ - Compatible libraries adapted for Vue.js (TailwindCSS, Axios, ESLint Vue)
313
+ - Automatic project creation with Vite
314
+
315
+ See [Next.js Documentation](./DOCUMENTATION/NEXTJS.md) and [Vue.js Documentation](./DOCUMENTATION/VUE.md) for complete guides.
302
316
 
303
317
  ### CLI Options
304
318
 
@@ -379,7 +393,7 @@ Contributions are welcome! Check out [CONTRIBUTING.md](./docs/CONTRIBUTING.md) f
379
393
 
380
394
  ### Develop a Plugin
381
395
 
382
- See [PLUGIN_DEVELOPMENT.md](./docs/PLUGIN_DEVELOPMENT.md) to create your own plugins.
396
+ See [PLUGIN_DEVELOPMENT.md](./docs/PLUGIN_DEVELOPMENT.md) to create your own plugins (development documentation).
383
397
 
384
398
  ### Development Setup
385
399
 
@@ -1,13 +1,14 @@
1
1
  import {
2
2
  CompatibilityValidator,
3
- compatibilityRules
4
- } from "./chunk-WKYUK64P.js";
3
+ allCompatibilityRules
4
+ } from "./chunk-D37FHAGO.js";
5
5
  import {
6
6
  pluginRegistry
7
- } from "./chunk-4VHPGJVU.js";
7
+ } from "./chunk-V75HW2AM.js";
8
+ import "./chunk-MQV3WNMH.js";
8
9
  import {
9
10
  logger
10
- } from "./chunk-QRFLHLFE.js";
11
+ } from "./chunk-HM2JWJOO.js";
11
12
  import "./chunk-QGM4M3NI.js";
12
13
 
13
14
  // src/cli/commands/check.ts
@@ -71,7 +72,7 @@ async function checkCompatibility(options) {
71
72
  }
72
73
  }
73
74
  console.log("\n\u{1F50D} Analyse de compatibilit\xE9...\n");
74
- const validator = new CompatibilityValidator(compatibilityRules);
75
+ const validator = new CompatibilityValidator(allCompatibilityRules);
75
76
  const validation = validator.validate(
76
77
  selectedPlugins
77
78
  );
@@ -0,0 +1,383 @@
1
+ // src/cli/i18n/fr.ts
2
+ var fr = {
3
+ language: {
4
+ select: "Choisissez votre langue",
5
+ options: [
6
+ { value: "fr", name: "Fran\xE7ais" },
7
+ { value: "en", name: "English" },
8
+ { value: "es", name: "Espa\xF1ol" }
9
+ ]
10
+ },
11
+ common: {
12
+ continue: "Continuer",
13
+ cancel: "Annuler",
14
+ back: "Retour",
15
+ none: "Aucun",
16
+ selected: (count) => count === 0 ? "Aucune biblioth\xE8que s\xE9lectionn\xE9e" : count === 1 ? "1 biblioth\xE8que s\xE9lectionn\xE9e" : `${count} biblioth\xE8ques s\xE9lectionn\xE9es`
17
+ },
18
+ plugins: {
19
+ selectCategory: (category) => `S\xE9lectionnez vos biblioth\xE8ques : ${category}`,
20
+ selectMultiple: "S\xE9lection multiple",
21
+ pressSpace: "Appuyez sur <espace> pour s\xE9lectionner",
22
+ pressEnter: "Appuyez sur <entr\xE9e> pour valider",
23
+ description: "Description"
24
+ },
25
+ detection: {
26
+ detecting: "\u{1F50D} D\xE9tection du contexte...",
27
+ framework: "Framework",
28
+ typescript: "TypeScript",
29
+ bundler: "Bundler",
30
+ packageManager: "Gestionnaire de paquets"
31
+ },
32
+ confirmation: {
33
+ summary: "\u{1F4CB} R\xE9sum\xE9 de l'installation",
34
+ packagesToInstall: "\u{1F4E6} Packages \xE0 installer",
35
+ filesToCreate: "\u{1F4DD} Fichiers qui seront cr\xE9\xE9s",
36
+ filesToModify: "\u{1F4DD} Fichiers qui seront modifi\xE9s",
37
+ continueQuestion: "Continuer avec l'installation ?"
38
+ },
39
+ installation: {
40
+ installing: "Installation en cours...",
41
+ configuring: "Configuration en cours...",
42
+ success: "\u2728 Installation termin\xE9e !",
43
+ error: "\u274C Erreur lors de l'installation",
44
+ rollback: "\u21BA Rollback en cours..."
45
+ },
46
+ report: {
47
+ title: "\u2728 Installation termin\xE9e !",
48
+ packagesInstalled: "\u{1F4E6} Packages install\xE9s",
49
+ filesCreated: "\u{1F4DD} Fichiers cr\xE9\xE9s",
50
+ filesModified: "\u{1F4DD} Fichiers modifi\xE9s",
51
+ nextSteps: "\u{1F680} Prochaines \xE9tapes"
52
+ },
53
+ errors: {
54
+ detectionFailed: "\xC9chec de la d\xE9tection du contexte",
55
+ installationFailed: "\xC9chec de l'installation",
56
+ validationFailed: "\xC9chec de la validation",
57
+ incompatiblePlugins: (plugins) => `Plugins incompatibles d\xE9tect\xE9s : ${plugins.join(", ")}`
58
+ },
59
+ vite: {
60
+ noReactDetected: "\u26A0\uFE0F Aucun projet React d\xE9tect\xE9 dans le r\xE9pertoire actuel.",
61
+ proposeSetup: "Souhaitez-vous cr\xE9er un nouveau projet React avec Vite ?",
62
+ projectName: "Nom du projet",
63
+ projectNamePlaceholder: "mon-projet-react",
64
+ template: "Template",
65
+ templateOptions: [
66
+ { value: "react", name: "React (JavaScript)" },
67
+ { value: "react-ts", name: "React (TypeScript)" }
68
+ ],
69
+ creating: "Cr\xE9ation du projet React avec Vite...",
70
+ success: "\u2705 Projet cr\xE9\xE9 avec succ\xE8s !",
71
+ error: "\u274C Erreur lors de la cr\xE9ation du projet",
72
+ changingDirectory: "Changement vers le r\xE9pertoire du projet...",
73
+ validation: {
74
+ empty: "Le nom du projet ne peut pas \xEAtre vide",
75
+ invalid: "Le nom du projet ne peut contenir que des lettres, chiffres, tirets et underscores"
76
+ },
77
+ folderExists: (name) => `Le dossier "${name}" existe d\xE9j\xE0. Veuillez choisir un autre nom.`
78
+ },
79
+ nextjs: {
80
+ noNextjsDetected: "\u26A0\uFE0F Aucun projet Next.js d\xE9tect\xE9 dans le r\xE9pertoire actuel.",
81
+ proposeSetup: "Souhaitez-vous cr\xE9er un nouveau projet Next.js ?",
82
+ projectName: "Nom du projet",
83
+ projectNamePlaceholder: "mon-projet-nextjs",
84
+ typescript: "Utiliser TypeScript ?",
85
+ eslint: "Utiliser ESLint ?",
86
+ tailwind: "Utiliser TailwindCSS ?",
87
+ srcDir: "Utiliser le dossier src/ ?",
88
+ appRouter: "Utiliser App Router (recommand\xE9) ?",
89
+ importAlias: "Alias d'import (ex: @/*)",
90
+ creating: "Cr\xE9ation du projet Next.js...",
91
+ success: "\u2705 Projet cr\xE9\xE9 avec succ\xE8s !",
92
+ error: "\u274C Erreur lors de la cr\xE9ation du projet",
93
+ changingDirectory: "Changement vers le r\xE9pertoire du projet...",
94
+ validation: {
95
+ empty: "Le nom du projet ne peut pas \xEAtre vide",
96
+ invalid: "Le nom du projet ne peut contenir que des lettres, chiffres, tirets et underscores"
97
+ },
98
+ folderExists: (name) => `Le dossier "${name}" existe d\xE9j\xE0. Veuillez choisir un autre nom.`
99
+ },
100
+ vue: {
101
+ noVueDetected: "\u26A0\uFE0F Aucun projet Vue.js d\xE9tect\xE9 dans le r\xE9pertoire actuel.",
102
+ proposeSetup: "Souhaitez-vous cr\xE9er un nouveau projet Vue.js avec Vite ?",
103
+ projectName: "Nom du projet",
104
+ projectNamePlaceholder: "mon-projet-vue",
105
+ typescript: "Utiliser TypeScript ?",
106
+ router: "Utiliser Vue Router ?",
107
+ pinia: "Utiliser Pinia (state management) ?",
108
+ vitest: "Utiliser Vitest (testing) ?",
109
+ eslint: "Utiliser ESLint ?",
110
+ prettier: "Utiliser Prettier ?",
111
+ creating: "Cr\xE9ation du projet Vue.js avec Vite...",
112
+ success: "\u2705 Projet cr\xE9\xE9 avec succ\xE8s !",
113
+ error: "\u274C Erreur lors de la cr\xE9ation du projet",
114
+ changingDirectory: "Changement vers le r\xE9pertoire du projet...",
115
+ validation: {
116
+ empty: "Le nom du projet ne peut pas \xEAtre vide",
117
+ invalid: "Le nom du projet ne peut contenir que des lettres, chiffres, tirets et underscores"
118
+ },
119
+ folderExists: (name) => `Le dossier "${name}" existe d\xE9j\xE0. Veuillez choisir un autre nom.`
120
+ }
121
+ };
122
+
123
+ // src/cli/i18n/en.ts
124
+ var en = {
125
+ language: {
126
+ select: "Choose your language",
127
+ options: [
128
+ { value: "fr", name: "Fran\xE7ais" },
129
+ { value: "en", name: "English" },
130
+ { value: "es", name: "Espa\xF1ol" }
131
+ ]
132
+ },
133
+ common: {
134
+ continue: "Continue",
135
+ cancel: "Cancel",
136
+ back: "Back",
137
+ none: "None",
138
+ selected: (count) => count === 0 ? "No library selected" : count === 1 ? "1 library selected" : `${count} libraries selected`
139
+ },
140
+ plugins: {
141
+ selectCategory: (category) => `Select your libraries: ${category}`,
142
+ selectMultiple: "Multiple selection",
143
+ pressSpace: "Press <space> to select",
144
+ pressEnter: "Press <enter> to confirm",
145
+ description: "Description"
146
+ },
147
+ detection: {
148
+ detecting: "\u{1F50D} Detecting context...",
149
+ framework: "Framework",
150
+ typescript: "TypeScript",
151
+ bundler: "Bundler",
152
+ packageManager: "Package manager"
153
+ },
154
+ confirmation: {
155
+ summary: "\u{1F4CB} Installation Summary",
156
+ packagesToInstall: "\u{1F4E6} Packages to install",
157
+ filesToCreate: "\u{1F4DD} Files that will be created",
158
+ filesToModify: "\u{1F4DD} Files that will be modified",
159
+ continueQuestion: "Continue with installation?"
160
+ },
161
+ installation: {
162
+ installing: "Installing...",
163
+ configuring: "Configuring...",
164
+ success: "\u2728 Installation completed!",
165
+ error: "\u274C Installation error",
166
+ rollback: "\u21BA Rolling back..."
167
+ },
168
+ report: {
169
+ title: "\u2728 Installation completed!",
170
+ packagesInstalled: "\u{1F4E6} Installed packages",
171
+ filesCreated: "\u{1F4DD} Created files",
172
+ filesModified: "\u{1F4DD} Modified files",
173
+ nextSteps: "\u{1F680} Next steps"
174
+ },
175
+ errors: {
176
+ detectionFailed: "Context detection failed",
177
+ installationFailed: "Installation failed",
178
+ validationFailed: "Validation failed",
179
+ incompatiblePlugins: (plugins) => `Incompatible plugins detected: ${plugins.join(", ")}`
180
+ },
181
+ vite: {
182
+ noReactDetected: "\u26A0\uFE0F No React project detected in the current directory.",
183
+ proposeSetup: "Would you like to create a new React project with Vite?",
184
+ projectName: "Project name",
185
+ projectNamePlaceholder: "my-react-project",
186
+ template: "Template",
187
+ templateOptions: [
188
+ { value: "react", name: "React (JavaScript)" },
189
+ { value: "react-ts", name: "React (TypeScript)" }
190
+ ],
191
+ creating: "Creating React project with Vite...",
192
+ success: "\u2705 Project created successfully!",
193
+ error: "\u274C Error creating project",
194
+ changingDirectory: "Changing to project directory...",
195
+ validation: {
196
+ empty: "Project name cannot be empty",
197
+ invalid: "Project name can only contain letters, numbers, dashes and underscores"
198
+ },
199
+ folderExists: (name) => `Folder "${name}" already exists. Please choose another name.`
200
+ },
201
+ nextjs: {
202
+ noNextjsDetected: "\u26A0\uFE0F No Next.js project detected in the current directory.",
203
+ proposeSetup: "Would you like to create a new Next.js project?",
204
+ projectName: "Project name",
205
+ projectNamePlaceholder: "my-nextjs-project",
206
+ typescript: "Use TypeScript?",
207
+ eslint: "Use ESLint?",
208
+ tailwind: "Use TailwindCSS?",
209
+ srcDir: "Use src/ directory?",
210
+ appRouter: "Use App Router (recommended)?",
211
+ importAlias: "Import alias (e.g. @/*)",
212
+ creating: "Creating Next.js project...",
213
+ success: "\u2705 Project created successfully!",
214
+ error: "\u274C Error creating project",
215
+ changingDirectory: "Changing to project directory...",
216
+ validation: {
217
+ empty: "Project name cannot be empty",
218
+ invalid: "Project name can only contain letters, numbers, dashes and underscores"
219
+ },
220
+ folderExists: (name) => `Folder "${name}" already exists. Please choose another name.`
221
+ },
222
+ vue: {
223
+ noVueDetected: "\u26A0\uFE0F No Vue.js project detected in the current directory.",
224
+ proposeSetup: "Would you like to create a new Vue.js project with Vite?",
225
+ projectName: "Project name",
226
+ projectNamePlaceholder: "my-vue-project",
227
+ typescript: "Use TypeScript?",
228
+ router: "Use Vue Router?",
229
+ pinia: "Use Pinia (state management)?",
230
+ vitest: "Use Vitest (testing)?",
231
+ eslint: "Use ESLint?",
232
+ prettier: "Use Prettier?",
233
+ creating: "Creating Vue.js project with Vite...",
234
+ success: "\u2705 Project created successfully!",
235
+ error: "\u274C Error creating project",
236
+ changingDirectory: "Changing to project directory...",
237
+ validation: {
238
+ empty: "Project name cannot be empty",
239
+ invalid: "Project name can only contain letters, numbers, dashes and underscores"
240
+ },
241
+ folderExists: (name) => `Folder "${name}" already exists. Please choose another name.`
242
+ }
243
+ };
244
+
245
+ // src/cli/i18n/es.ts
246
+ var es = {
247
+ language: {
248
+ select: "Elige tu idioma",
249
+ options: [
250
+ { value: "fr", name: "Fran\xE7ais" },
251
+ { value: "en", name: "English" },
252
+ { value: "es", name: "Espa\xF1ol" }
253
+ ]
254
+ },
255
+ common: {
256
+ continue: "Continuar",
257
+ cancel: "Cancelar",
258
+ back: "Volver",
259
+ none: "Ninguno",
260
+ selected: (count) => count === 0 ? "Ninguna biblioteca seleccionada" : count === 1 ? "1 biblioteca seleccionada" : `${count} bibliotecas seleccionadas`
261
+ },
262
+ plugins: {
263
+ selectCategory: (category) => `Selecciona tus bibliotecas: ${category}`,
264
+ selectMultiple: "Selecci\xF3n m\xFAltiple",
265
+ pressSpace: "Presiona <espacio> para seleccionar",
266
+ pressEnter: "Presiona <entrar> para confirmar",
267
+ description: "Descripci\xF3n"
268
+ },
269
+ detection: {
270
+ detecting: "\u{1F50D} Detectando contexto...",
271
+ framework: "Framework",
272
+ typescript: "TypeScript",
273
+ bundler: "Bundler",
274
+ packageManager: "Gestor de paquetes"
275
+ },
276
+ confirmation: {
277
+ summary: "\u{1F4CB} Resumen de la instalaci\xF3n",
278
+ packagesToInstall: "\u{1F4E6} Paquetes a instalar",
279
+ filesToCreate: "\u{1F4DD} Archivos que se crear\xE1n",
280
+ filesToModify: "\u{1F4DD} Archivos que se modificar\xE1n",
281
+ continueQuestion: "\xBFContinuar con la instalaci\xF3n?"
282
+ },
283
+ installation: {
284
+ installing: "Instalando...",
285
+ configuring: "Configurando...",
286
+ success: "\u2728 \xA1Instalaci\xF3n completada!",
287
+ error: "\u274C Error en la instalaci\xF3n",
288
+ rollback: "\u21BA Revirtiendo..."
289
+ },
290
+ report: {
291
+ title: "\u2728 \xA1Instalaci\xF3n completada!",
292
+ packagesInstalled: "\u{1F4E6} Paquetes instalados",
293
+ filesCreated: "\u{1F4DD} Archivos creados",
294
+ filesModified: "\u{1F4DD} Archivos modificados",
295
+ nextSteps: "\u{1F680} Pr\xF3ximos pasos"
296
+ },
297
+ errors: {
298
+ detectionFailed: "Fallo en la detecci\xF3n del contexto",
299
+ installationFailed: "Fallo en la instalaci\xF3n",
300
+ validationFailed: "Fallo en la validaci\xF3n",
301
+ incompatiblePlugins: (plugins) => `Plugins incompatibles detectados: ${plugins.join(", ")}`
302
+ },
303
+ vite: {
304
+ noReactDetected: "\u26A0\uFE0F No se detect\xF3 ning\xFAn proyecto React en el directorio actual.",
305
+ proposeSetup: "\xBFDesea crear un nuevo proyecto React con Vite?",
306
+ projectName: "Nombre del proyecto",
307
+ projectNamePlaceholder: "mi-proyecto-react",
308
+ template: "Plantilla",
309
+ templateOptions: [
310
+ { value: "react", name: "React (JavaScript)" },
311
+ { value: "react-ts", name: "React (TypeScript)" }
312
+ ],
313
+ creating: "Creando proyecto React con Vite...",
314
+ success: "\u2705 \xA1Proyecto creado con \xE9xito!",
315
+ error: "\u274C Error al crear el proyecto",
316
+ changingDirectory: "Cambiando al directorio del proyecto...",
317
+ validation: {
318
+ empty: "El nombre del proyecto no puede estar vac\xEDo",
319
+ invalid: "El nombre del proyecto solo puede contener letras, n\xFAmeros, guiones y guiones bajos"
320
+ },
321
+ folderExists: (name) => `La carpeta "${name}" ya existe. Por favor, elija otro nombre.`
322
+ },
323
+ nextjs: {
324
+ noNextjsDetected: "\u26A0\uFE0F No se detect\xF3 ning\xFAn proyecto Next.js en el directorio actual.",
325
+ proposeSetup: "\xBFDesea crear un nuevo proyecto Next.js?",
326
+ projectName: "Nombre del proyecto",
327
+ projectNamePlaceholder: "mi-proyecto-nextjs",
328
+ typescript: "\xBFUsar TypeScript?",
329
+ eslint: "\xBFUsar ESLint?",
330
+ tailwind: "\xBFUsar TailwindCSS?",
331
+ srcDir: "\xBFUsar directorio src/?",
332
+ appRouter: "\xBFUsar App Router (recomendado)?",
333
+ importAlias: "Alias de importaci\xF3n (ej: @/*)",
334
+ creating: "Creando proyecto Next.js...",
335
+ success: "\u2705 \xA1Proyecto creado con \xE9xito!",
336
+ error: "\u274C Error al crear el proyecto",
337
+ changingDirectory: "Cambiando al directorio del proyecto...",
338
+ validation: {
339
+ empty: "El nombre del proyecto no puede estar vac\xEDo",
340
+ invalid: "El nombre del proyecto solo puede contener letras, n\xFAmeros, guiones y guiones bajos"
341
+ },
342
+ folderExists: (name) => `La carpeta "${name}" ya existe. Por favor, elija otro nombre.`
343
+ },
344
+ vue: {
345
+ noVueDetected: "\u26A0\uFE0F No se detect\xF3 ning\xFAn proyecto Vue.js en el directorio actual.",
346
+ proposeSetup: "\xBFDesea crear un nuevo proyecto Vue.js con Vite?",
347
+ projectName: "Nombre del proyecto",
348
+ projectNamePlaceholder: "mi-proyecto-vue",
349
+ typescript: "\xBFUsar TypeScript?",
350
+ router: "\xBFUsar Vue Router?",
351
+ pinia: "\xBFUsar Pinia (gesti\xF3n de estado)?",
352
+ vitest: "\xBFUsar Vitest (pruebas)?",
353
+ eslint: "\xBFUsar ESLint?",
354
+ prettier: "\xBFUsar Prettier?",
355
+ creating: "Creando proyecto Vue.js con Vite...",
356
+ success: "\u2705 \xA1Proyecto creado con \xE9xito!",
357
+ error: "\u274C Error al crear el proyecto",
358
+ changingDirectory: "Cambiando al directorio del proyecto...",
359
+ validation: {
360
+ empty: "El nombre del proyecto no puede estar vac\xEDo",
361
+ invalid: "El nombre del proyecto solo puede contener letras, n\xFAmeros, guiones y guiones bajos"
362
+ },
363
+ folderExists: (name) => `La carpeta "${name}" ya existe. Por favor, elija otro nombre.`
364
+ }
365
+ };
366
+
367
+ // src/cli/i18n/index.ts
368
+ function getTranslations(lang) {
369
+ switch (lang) {
370
+ case "fr":
371
+ return fr;
372
+ case "en":
373
+ return en;
374
+ case "es":
375
+ return es;
376
+ default:
377
+ return en;
378
+ }
379
+ }
380
+
381
+ export {
382
+ getTranslations
383
+ };