@configjs/cli 1.1.1 → 1.1.3
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 +454 -0
- package/README.md +313 -289
- package/dist/{chunk-QDVUNUTK.js → chunk-ZSDLWQSS.js} +1 -0
- package/dist/cli.js +4 -4
- package/dist/{install-UTFQ545S.js → install-7LTMBLVZ.js} +173 -3
- package/dist/{installed-G2RXXXZ6.js → installed-Y76PWTXI.js} +1 -1
- package/dist/{remove-QDF5BA6U.js → remove-7HJKNAEX.js} +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,286 +1,326 @@
|
|
|
1
|
-
#
|
|
1
|
+
# ConfigJS
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**The intelligent CLI that configures your entire frontend stack in under 2 minutes**
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
[](https://www.npmjs.com/package/@configjs/cli)
|
|
6
|
+
[](https://www.npmjs.com/package/@configjs/cli)
|
|
7
|
+
[](https://opensource.org/licenses/MIT)
|
|
8
|
+
[](https://nodejs.org)
|
|
9
|
+
[](https://bundlephobia.com/package/@configjs/cli)
|
|
10
|
+
[](https://makeapullrequest.com)
|
|
11
|
+
[](https://github.com/sponsors/julien-lin)
|
|
6
12
|
|
|
7
|
-
[
|
|
8
|
-
[](https://github.com/julien-lin/configjs/actions/workflows/test.yml)
|
|
9
|
-
[](https://github.com/julien-lin/configjs/actions/workflows/publish.yml)
|
|
10
|
-
[](https://opensource.org/licenses/MIT)
|
|
11
|
-
[](https://nodejs.org)
|
|
13
|
+
**[Quick Start](#-quick-start) • [Features](#-key-features) • [Documentation](#-documentation) • [Plugins](#-supported-libraries) • [Contribute](#-contributing)**
|
|
12
14
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
[Installation](#-installation) • [Usage](#-usage) • [Fonctionnalités](#-fonctionnalités) • [Documentation](#-documentation)
|
|
16
|
-
|
|
17
|
-
</div>
|
|
15
|
+
> **[🇫🇷 Version française](./README.fr.md)**
|
|
18
16
|
|
|
19
17
|
---
|
|
20
18
|
|
|
21
|
-
##
|
|
22
|
-
|
|
23
|
-
Le bootstrap d'un projet frontend moderne prend **2-4 heures** entre l'installation des bibliothèques, leur configuration, et la résolution des conflits potentiels.
|
|
19
|
+
## 💡 Why ConfigJS?
|
|
24
20
|
|
|
25
|
-
|
|
21
|
+
Setting up a modern React project typically takes **2-4 hours**:
|
|
22
|
+
- Installing libraries one by one
|
|
23
|
+
- Reading documentation for each tool
|
|
24
|
+
- Writing boilerplate configuration
|
|
25
|
+
- Resolving version conflicts
|
|
26
|
+
- Creating initial code structure
|
|
26
27
|
|
|
27
|
-
|
|
28
|
-
- ✅ **Installant ET configurant** les bibliothèques de votre choix
|
|
29
|
-
- ✅ **Validant les compatibilités** pour éviter les conflits
|
|
30
|
-
- ✅ **Générant le code initial** nécessaire (routes, stores, configs)
|
|
31
|
-
- ✅ Garantissant un **projet immédiatement utilisable**
|
|
28
|
+
**ConfigJS reduces this to less than 2 minutes** with zero effort.
|
|
32
29
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
30
|
+
### The Problem
|
|
31
|
+
```bash
|
|
32
|
+
npm install react-router-dom axios zustand tailwindcss ...
|
|
33
|
+
# Then spend hours configuring each library manually
|
|
34
|
+
# Fight with TypeScript errors
|
|
35
|
+
# Debug version conflicts
|
|
36
|
+
# Write repetitive boilerplate
|
|
37
|
+
```
|
|
36
38
|
|
|
39
|
+
### The ConfigJS Solution
|
|
37
40
|
```bash
|
|
38
41
|
npx @configjs/cli react
|
|
42
|
+
# Interactive wizard guides you
|
|
43
|
+
# Everything installed AND configured
|
|
44
|
+
# Zero conflicts guaranteed
|
|
45
|
+
# Production-ready code generated
|
|
39
46
|
```
|
|
40
47
|
|
|
41
|
-
|
|
48
|
+
## 🚀 Quick Start
|
|
49
|
+
|
|
50
|
+
**No installation required!** Use directly with `npx`:
|
|
42
51
|
|
|
43
52
|
```bash
|
|
44
|
-
|
|
45
|
-
|
|
53
|
+
cd your-react-project
|
|
54
|
+
npx @configjs/cli react
|
|
46
55
|
```
|
|
47
56
|
|
|
48
|
-
|
|
57
|
+
That's it! ConfigJS will:
|
|
58
|
+
1. 🔍 **Detect** your environment (React version, TypeScript, bundler)
|
|
59
|
+
2. 🎯 **Guide** you through library selection by category
|
|
60
|
+
3. 📦 **Install** all packages sequentially (no conflicts)
|
|
61
|
+
4. ⚙️ **Configure** everything with working code
|
|
62
|
+
5. ✅ **Validate** compatibility and dependencies
|
|
63
|
+
6. 🎉 **Done!** Your project is production-ready
|
|
49
64
|
|
|
50
|
-
###
|
|
65
|
+
### Example Session
|
|
51
66
|
|
|
52
67
|
```bash
|
|
53
|
-
|
|
54
|
-
|
|
68
|
+
$ npx @configjs/cli react
|
|
69
|
+
|
|
70
|
+
✔ Choose your language › English
|
|
71
|
+
|
|
72
|
+
🔍 Detecting context...
|
|
73
|
+
✓ Framework: React 19.2.0
|
|
74
|
+
✓ TypeScript: Yes
|
|
75
|
+
✓ Bundler: Vite 7.2.4
|
|
76
|
+
✓ Package manager: npm
|
|
77
|
+
|
|
78
|
+
✔ CSS / Styling › TailwindCSS
|
|
79
|
+
✔ Routing › React Router
|
|
80
|
+
✔ State Management › Zustand
|
|
81
|
+
✔ HTTP Client › Axios
|
|
82
|
+
✔ UI Components › Shadcn/ui
|
|
83
|
+
✔ Forms › React Hook Form + Zod
|
|
84
|
+
✔ Tooling › ESLint, Prettier, Husky
|
|
85
|
+
|
|
86
|
+
✓ 7 libraries selected
|
|
87
|
+
|
|
88
|
+
✨ Installation completed in 1.8s
|
|
89
|
+
|
|
90
|
+
📦 Installed packages:
|
|
91
|
+
✓ TailwindCSS (^4.1.18)
|
|
92
|
+
✓ React Router (^7.11.0)
|
|
93
|
+
✓ Zustand (^5.0.9)
|
|
94
|
+
✓ Axios (^1.13.2)
|
|
95
|
+
...
|
|
96
|
+
|
|
97
|
+
📝 Created files:
|
|
98
|
+
• src/router.tsx
|
|
99
|
+
• src/store/index.ts
|
|
100
|
+
• src/lib/api.ts
|
|
101
|
+
• components.json
|
|
102
|
+
...
|
|
103
|
+
|
|
104
|
+
🚀 Next steps:
|
|
105
|
+
1. npm run dev
|
|
106
|
+
2. Visit http://localhost:5173
|
|
55
107
|
```
|
|
56
108
|
|
|
57
|
-
|
|
109
|
+
---
|
|
58
110
|
|
|
59
|
-
|
|
60
|
-
🔍 Détection du contexte...
|
|
61
|
-
✓ Framework: React 18.2.0
|
|
62
|
-
✓ TypeScript: Oui
|
|
63
|
-
✓ Bundler: Vite 5.0.0
|
|
111
|
+
## ✨ Key Features
|
|
64
112
|
|
|
65
|
-
|
|
113
|
+
### 🎯 Smart Detection
|
|
66
114
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
115
|
+
ConfigJS automatically detects your project setup:
|
|
116
|
+
- ✅ **Framework & Version** (React 18/19)
|
|
117
|
+
- ✅ **Language** (JavaScript/TypeScript)
|
|
118
|
+
- ✅ **Bundler** (Vite, Webpack, Create React App)
|
|
119
|
+
- ✅ **Package Manager** (npm, yarn, pnpm, bun)
|
|
120
|
+
- ✅ **Already Installed Libraries** (skips duplicates)
|
|
121
|
+
- ✅ **Project Structure** (adapts configuration)
|
|
71
122
|
|
|
72
|
-
|
|
73
|
-
○ Redux Toolkit
|
|
74
|
-
● zustand
|
|
75
|
-
○ jotai
|
|
76
|
-
○ Aucun
|
|
123
|
+
### ⚙️ Complete Configuration (Not Just Installation!)
|
|
77
124
|
|
|
78
|
-
|
|
79
|
-
```
|
|
125
|
+
Unlike simple installers, ConfigJS **actually configures** your libraries with working code:
|
|
80
126
|
|
|
81
|
-
|
|
127
|
+
**React Router Example:**
|
|
128
|
+
```typescript
|
|
129
|
+
✓ Installed react-router-dom
|
|
130
|
+
✓ Created src/router.tsx with routes
|
|
131
|
+
✓ Created src/routes/Home.tsx
|
|
132
|
+
✓ Created src/routes/About.tsx
|
|
133
|
+
✓ Integrated RouterProvider in App.tsx
|
|
134
|
+
✓ TypeScript types configured
|
|
135
|
+
→ Ready to use immediately!
|
|
136
|
+
```
|
|
82
137
|
|
|
83
|
-
|
|
138
|
+
**TailwindCSS Example:**
|
|
139
|
+
```typescript
|
|
140
|
+
✓ Installed tailwindcss + @tailwindcss/vite
|
|
141
|
+
✓ Updated vite.config.ts with plugin
|
|
142
|
+
✓ Injected directives in src/index.css
|
|
143
|
+
✓ JIT mode enabled
|
|
144
|
+
→ Start using Tailwind classes now!
|
|
145
|
+
```
|
|
84
146
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
147
|
+
**Redux Toolkit Example:**
|
|
148
|
+
```typescript
|
|
149
|
+
✓ Installed @reduxjs/toolkit + react-redux
|
|
150
|
+
✓ Created src/store/index.ts with configureStore
|
|
151
|
+
✓ Created src/store/slices/counterSlice.ts
|
|
152
|
+
✓ Created src/store/hooks.ts (typed hooks)
|
|
153
|
+
✓ Wrapped App in <Provider>
|
|
154
|
+
→ Full Redux setup in seconds!
|
|
93
155
|
```
|
|
94
156
|
|
|
95
|
-
|
|
157
|
+
### 🛡️ Smart Compatibility Validation
|
|
158
|
+
|
|
159
|
+
ConfigJS prevents conflicts before they happen:
|
|
160
|
+
|
|
161
|
+
- ❌ **Exclusive Conflicts**: Can't install Redux + Zustand (only one state manager)
|
|
162
|
+
- ❌ **Exclusive Routing**: React Router OR TanStack Router (not both)
|
|
163
|
+
- ⚠️ **Warnings**: TailwindCSS + Bootstrap (different philosophies)
|
|
164
|
+
- ✅ **Auto-Dependencies**: TailwindCSS requires PostCSS → installed automatically
|
|
165
|
+
- ✅ **Plugin Tracking**: Remembers installed plugins (`.configjsrc`)
|
|
166
|
+
|
|
167
|
+
### 📦 Supported Libraries (40+ Plugins)
|
|
168
|
+
|
|
169
|
+
#### 🎨 CSS / Styling
|
|
170
|
+
- TailwindCSS v4 (with @tailwindcss/vite)
|
|
171
|
+
- Styled Components
|
|
172
|
+
- React Bootstrap
|
|
173
|
+
- Emotion
|
|
174
|
+
- CSS Modules
|
|
175
|
+
|
|
176
|
+
#### 🧭 Routing
|
|
177
|
+
- React Router v7
|
|
178
|
+
- TanStack Router
|
|
179
|
+
|
|
180
|
+
#### 🗂️ State Management
|
|
181
|
+
- Redux Toolkit
|
|
182
|
+
- Zustand
|
|
183
|
+
- Jotai
|
|
184
|
+
- MobX
|
|
185
|
+
|
|
186
|
+
#### 🌐 HTTP Client
|
|
187
|
+
- Axios
|
|
188
|
+
- TanStack Query (React Query)
|
|
189
|
+
- Fetch Wrapper
|
|
190
|
+
|
|
191
|
+
#### 📝 Forms
|
|
192
|
+
- React Hook Form
|
|
193
|
+
- Formik
|
|
194
|
+
- Zod (validation)
|
|
195
|
+
- Yup (validation)
|
|
196
|
+
|
|
197
|
+
#### 🎨 UI Components
|
|
198
|
+
- Shadcn/ui
|
|
199
|
+
- Radix UI
|
|
200
|
+
- React Icons
|
|
201
|
+
- Lucide Icons
|
|
202
|
+
- React Hot Toast
|
|
203
|
+
|
|
204
|
+
#### 🧪 Testing
|
|
205
|
+
- React Testing Library
|
|
206
|
+
- Vitest
|
|
207
|
+
- Jest
|
|
208
|
+
|
|
209
|
+
#### 🛠️ Tooling
|
|
210
|
+
- ESLint
|
|
211
|
+
- Prettier
|
|
212
|
+
- Husky (Git hooks)
|
|
213
|
+
- lint-staged
|
|
214
|
+
- date-fns
|
|
215
|
+
|
|
216
|
+
#### ✨ Animation
|
|
217
|
+
- Framer Motion
|
|
218
|
+
- React Spring
|
|
219
|
+
|
|
220
|
+
#### 🔧 Utils
|
|
221
|
+
- Lodash
|
|
222
|
+
- clsx / classnames
|
|
223
|
+
|
|
224
|
+
### 🔄 Automatic Rollback
|
|
225
|
+
|
|
226
|
+
If something goes wrong, ConfigJS automatically restores everything:
|
|
96
227
|
|
|
97
228
|
```bash
|
|
98
|
-
|
|
229
|
+
❌ Error detected during configuration
|
|
230
|
+
↺ Rolling back...
|
|
231
|
+
✓ Restored package.json
|
|
232
|
+
✓ Restored all modified files
|
|
233
|
+
✓ Removed created files
|
|
234
|
+
✅ Project restored to previous state
|
|
99
235
|
```
|
|
100
236
|
|
|
101
|
-
###
|
|
237
|
+
### 🎯 Plugin Tracking System
|
|
102
238
|
|
|
103
|
-
|
|
239
|
+
Never reinstall the same library twice:
|
|
104
240
|
|
|
105
241
|
```bash
|
|
106
|
-
|
|
242
|
+
# First run
|
|
243
|
+
$ npx @configjs/cli react
|
|
244
|
+
✔ TailwindCSS › Selected
|
|
245
|
+
|
|
246
|
+
# Second run (same project)
|
|
247
|
+
$ npx @configjs/cli react
|
|
248
|
+
ℹ TailwindCSS is already installed, skipping...
|
|
249
|
+
|
|
250
|
+
# Check installed plugins
|
|
251
|
+
$ npx @configjs/cli installed
|
|
252
|
+
📦 Installed plugins:
|
|
253
|
+
✓ TailwindCSS (^4.1.18) - installed 2 hours ago
|
|
254
|
+
✓ React Router (^7.11.0) - installed 2 hours ago
|
|
107
255
|
```
|
|
108
256
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
### 🎯 Catégories supportées
|
|
112
|
-
|
|
113
|
-
| Catégorie | Bibliothèques disponibles |
|
|
114
|
-
|-----------|---------------------------|
|
|
115
|
-
| **Routing** | react-router-dom, @tanstack/router |
|
|
116
|
-
| **State Management** | Redux Toolkit, Zustand, Jotai |
|
|
117
|
-
| **HTTP Client** | Axios, Fetch wrapper |
|
|
118
|
-
| **CSS/UI** | TailwindCSS, Bootstrap |
|
|
119
|
-
| **Tooling** | ESLint, Prettier, Husky, lint-staged, commitlint |
|
|
120
|
-
|
|
121
|
-
### 🧠 Détection intelligente
|
|
122
|
-
|
|
123
|
-
confjs détecte automatiquement :
|
|
124
|
-
|
|
125
|
-
- ✅ Framework et version (React)
|
|
126
|
-
- ✅ TypeScript
|
|
127
|
-
- ✅ Bundler (Vite, Create React App, Webpack)
|
|
128
|
-
- ✅ Package manager (npm, yarn, pnpm, bun)
|
|
129
|
-
- ✅ Structure du projet
|
|
130
|
-
- ✅ Bibliothèques déjà installées
|
|
131
|
-
|
|
132
|
-
### ⚙️ Configuration automatique
|
|
257
|
+
ConfigJS creates a `.configjsrc` file to track installations and prevent conflicts.
|
|
133
258
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
**Exemple avec React Router :**
|
|
137
|
-
```
|
|
138
|
-
✓ Installation de react-router-dom
|
|
139
|
-
✓ Création de src/router.tsx
|
|
140
|
-
✓ Création de src/routes/Home.tsx
|
|
141
|
-
✓ Intégration dans src/App.tsx
|
|
142
|
-
✓ Configuration complète et fonctionnelle
|
|
143
|
-
```
|
|
259
|
+
---
|
|
144
260
|
|
|
145
|
-
|
|
146
|
-
```
|
|
147
|
-
✓ Installation de tailwindcss, postcss, autoprefixer
|
|
148
|
-
✓ Création de tailwind.config.js
|
|
149
|
-
✓ Création de postcss.config.js
|
|
150
|
-
✓ Injection dans src/index.css
|
|
151
|
-
✓ Configuration JIT activée
|
|
152
|
-
```
|
|
261
|
+
## 📖 Documentation
|
|
153
262
|
|
|
154
|
-
###
|
|
263
|
+
### Commands
|
|
155
264
|
|
|
156
|
-
|
|
265
|
+
```bash
|
|
266
|
+
# Interactive installation
|
|
267
|
+
npx @configjs/cli react
|
|
157
268
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
269
|
+
# List available plugins
|
|
270
|
+
npx @configjs/cli list
|
|
271
|
+
npx @configjs/cli list --category routing
|
|
161
272
|
|
|
162
|
-
|
|
273
|
+
# Check installed plugins
|
|
274
|
+
npx @configjs/cli installed
|
|
163
275
|
|
|
164
|
-
|
|
276
|
+
# Remove plugin from tracking
|
|
277
|
+
npx @configjs/cli remove <plugin-name>
|
|
165
278
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
↺ Rollback en cours...
|
|
169
|
-
✓ Fichiers restaurés
|
|
170
|
-
✓ package.json restauré
|
|
279
|
+
# Validate project compatibility
|
|
280
|
+
npx @configjs/cli check
|
|
171
281
|
```
|
|
172
282
|
|
|
173
|
-
|
|
283
|
+
### CLI Options
|
|
174
284
|
|
|
175
285
|
```bash
|
|
176
|
-
npx
|
|
286
|
+
npx @configjs/cli react [options]
|
|
177
287
|
```
|
|
178
288
|
|
|
179
289
|
| Option | Description |
|
|
180
290
|
|--------|-------------|
|
|
181
|
-
| `--yes`, `-y` |
|
|
182
|
-
| `--dry-run`, `-d` |
|
|
183
|
-
| `--silent`, `-s` |
|
|
184
|
-
| `--
|
|
185
|
-
| `--
|
|
186
|
-
| `--force`, `-f` | Force l'installation (écrase les configs) |
|
|
187
|
-
|
|
188
|
-
### Exemples
|
|
189
|
-
|
|
190
|
-
```bash
|
|
191
|
-
# Mode rapide avec valeurs par défaut
|
|
192
|
-
npx confjs react --yes
|
|
193
|
-
|
|
194
|
-
# Simulation uniquement
|
|
195
|
-
npx confjs react --dry-run
|
|
196
|
-
|
|
197
|
-
# Pour CI/CD
|
|
198
|
-
npx confjs react --silent --config .confjs.json
|
|
199
|
-
|
|
200
|
-
# Avec logs détaillés
|
|
201
|
-
npx confjs react --debug
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
## 📚 Commandes additionnelles
|
|
205
|
-
|
|
206
|
-
### Liste des bibliothèques disponibles
|
|
207
|
-
|
|
208
|
-
```bash
|
|
209
|
-
npx confjs list
|
|
210
|
-
```
|
|
211
|
-
|
|
212
|
-
Filtrer par catégorie :
|
|
291
|
+
| `--yes`, `-y` | Skip prompts, use defaults |
|
|
292
|
+
| `--dry-run`, `-d` | Simulate without writing files |
|
|
293
|
+
| `--silent`, `-s` | No output (CI/CD mode) |
|
|
294
|
+
| `--no-install` | Generate configs only, skip npm install |
|
|
295
|
+
| `--debug` | Verbose logging |
|
|
213
296
|
|
|
214
|
-
|
|
215
|
-
npx confjs list --category routing
|
|
216
|
-
npx confjs list --category state
|
|
217
|
-
```
|
|
218
|
-
|
|
219
|
-
### Vérifier la compatibilité
|
|
297
|
+
### Usage Examples
|
|
220
298
|
|
|
299
|
+
**Quick setup with defaults:**
|
|
221
300
|
```bash
|
|
222
|
-
npx
|
|
301
|
+
npx @configjs/cli react --yes
|
|
223
302
|
```
|
|
224
303
|
|
|
225
|
-
|
|
226
|
-
|
|
304
|
+
**CI/CD mode:**
|
|
227
305
|
```bash
|
|
228
|
-
npx
|
|
229
|
-
npx confjs react --help
|
|
306
|
+
npx @configjs/cli react --silent --yes
|
|
230
307
|
```
|
|
231
308
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
### Setup complet d'un projet React
|
|
235
|
-
|
|
309
|
+
**Preview changes only:**
|
|
236
310
|
```bash
|
|
237
|
-
|
|
238
|
-
npm create vite@latest mon-app -- --template react-ts
|
|
239
|
-
cd mon-app
|
|
240
|
-
|
|
241
|
-
# Installer et configurer la stack
|
|
242
|
-
npx confjs react
|
|
243
|
-
|
|
244
|
-
# Sélectionner :
|
|
245
|
-
# - Routing: react-router-dom
|
|
246
|
-
# - State: zustand
|
|
247
|
-
# - CSS: tailwindcss
|
|
248
|
-
# - HTTP: axios
|
|
249
|
-
# - Tooling: eslint, prettier
|
|
250
|
-
|
|
251
|
-
# Démarrer
|
|
252
|
-
npm run dev
|
|
311
|
+
npx @configjs/cli react --dry-run
|
|
253
312
|
```
|
|
254
313
|
|
|
255
|
-
|
|
256
|
-
|
|
314
|
+
**Generate configs without installing packages:**
|
|
257
315
|
```bash
|
|
258
|
-
|
|
259
|
-
{
|
|
260
|
-
"routing": "react-router-dom",
|
|
261
|
-
"state": "zustand",
|
|
262
|
-
"css": "tailwindcss",
|
|
263
|
-
"http": "axios",
|
|
264
|
-
"tooling": ["eslint", "prettier", "husky"]
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
# Chaque membre de l'équipe exécute :
|
|
268
|
-
npx confjs react --config .confjs.json
|
|
316
|
+
npx @configjs/cli react --no-install
|
|
269
317
|
```
|
|
270
318
|
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
```yaml
|
|
274
|
-
# .github/workflows/setup.yml
|
|
275
|
-
- name: Setup project
|
|
276
|
-
run: npx confjs react --silent --config .confjs.json
|
|
277
|
-
```
|
|
319
|
+
---
|
|
278
320
|
|
|
279
321
|
## 🏗️ Architecture
|
|
280
322
|
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
confjs utilise une architecture modulaire où chaque bibliothèque est un plugin autonome :
|
|
323
|
+
ConfigJS uses a modular plugin architecture where each library is an autonomous plugin:
|
|
284
324
|
|
|
285
325
|
```typescript
|
|
286
326
|
interface Plugin {
|
|
@@ -288,144 +328,128 @@ interface Plugin {
|
|
|
288
328
|
category: Category
|
|
289
329
|
frameworks: Framework[]
|
|
290
330
|
|
|
291
|
-
//
|
|
331
|
+
// Compatibility
|
|
292
332
|
compatibleWith?: string[]
|
|
293
333
|
incompatibleWith?: string[]
|
|
334
|
+
requires?: string[]
|
|
294
335
|
|
|
295
336
|
// Lifecycle
|
|
337
|
+
detect?: (ctx: ProjectContext) => boolean | Promise<boolean>
|
|
296
338
|
install: (ctx: ProjectContext) => Promise<void>
|
|
297
339
|
configure: (ctx: ProjectContext) => Promise<void>
|
|
298
340
|
rollback?: (ctx: ProjectContext) => Promise<void>
|
|
299
341
|
}
|
|
300
342
|
```
|
|
301
343
|
|
|
302
|
-
###
|
|
344
|
+
### Extensibility
|
|
303
345
|
|
|
304
|
-
|
|
346
|
+
Create your own plugins:
|
|
305
347
|
|
|
306
348
|
```bash
|
|
307
|
-
npm install
|
|
349
|
+
npm install @configjs/plugin-react-query
|
|
308
350
|
```
|
|
309
351
|
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
## 🔧 Configuration
|
|
313
|
-
|
|
314
|
-
### Fichier .confjs.json
|
|
352
|
+
ConfigJS will automatically detect and load plugins prefixed with `@configjs/plugin-*`.
|
|
315
353
|
|
|
316
|
-
|
|
317
|
-
{
|
|
318
|
-
"routing": "react-router-dom",
|
|
319
|
-
"state": "zustand",
|
|
320
|
-
"css": "tailwindcss",
|
|
321
|
-
"http": "axios",
|
|
322
|
-
"forms": "react-hook-form",
|
|
323
|
-
"tooling": ["eslint", "prettier", "husky"],
|
|
324
|
-
|
|
325
|
-
"options": {
|
|
326
|
-
"typescript": true,
|
|
327
|
-
"strict": true,
|
|
328
|
-
"examples": true
|
|
329
|
-
}
|
|
330
|
-
}
|
|
331
|
-
```
|
|
332
|
-
|
|
333
|
-
### Fichier .confjs.yaml (alternatif)
|
|
334
|
-
|
|
335
|
-
```yaml
|
|
336
|
-
routing: react-router-dom
|
|
337
|
-
state: zustand
|
|
338
|
-
css: tailwindcss
|
|
339
|
-
http: axios
|
|
340
|
-
|
|
341
|
-
tooling:
|
|
342
|
-
- eslint
|
|
343
|
-
- prettier
|
|
344
|
-
- husky
|
|
345
|
-
|
|
346
|
-
options:
|
|
347
|
-
typescript: true
|
|
348
|
-
strict: true
|
|
349
|
-
examples: true
|
|
350
|
-
```
|
|
354
|
+
---
|
|
351
355
|
|
|
352
|
-
## 🤝
|
|
356
|
+
## 🤝 Contributing
|
|
353
357
|
|
|
354
|
-
|
|
358
|
+
Contributions are welcome! Check out [CONTRIBUTING.md](./docs/CONTRIBUTING.md) for guidelines.
|
|
355
359
|
|
|
356
|
-
###
|
|
360
|
+
### Develop a Plugin
|
|
357
361
|
|
|
358
|
-
|
|
362
|
+
See [PLUGIN_DEVELOPMENT.md](./docs/PLUGIN_DEVELOPMENT.md) to create your own plugins.
|
|
359
363
|
|
|
360
|
-
### Setup
|
|
364
|
+
### Development Setup
|
|
361
365
|
|
|
362
366
|
```bash
|
|
363
367
|
# Clone
|
|
364
|
-
git clone https://github.com/julien/
|
|
365
|
-
cd
|
|
368
|
+
git clone https://github.com/julien-lin/orchestrateur-framework.git
|
|
369
|
+
cd orchestrateur-framework
|
|
366
370
|
|
|
367
|
-
# Install
|
|
371
|
+
# Install dependencies
|
|
368
372
|
npm install
|
|
369
373
|
|
|
370
|
-
#
|
|
371
|
-
npm run dev
|
|
372
|
-
|
|
373
|
-
# Tests
|
|
374
|
+
# Run tests
|
|
374
375
|
npm run test
|
|
375
376
|
npm run test:watch
|
|
376
377
|
|
|
378
|
+
# Type check
|
|
379
|
+
npm run typecheck
|
|
380
|
+
|
|
381
|
+
# Lint
|
|
382
|
+
npm run lint
|
|
383
|
+
|
|
377
384
|
# Build
|
|
378
385
|
npm run build
|
|
379
386
|
```
|
|
380
387
|
|
|
388
|
+
---
|
|
389
|
+
|
|
381
390
|
## 📋 Requirements
|
|
382
391
|
|
|
383
392
|
- **Node.js** ≥ 18.0.0
|
|
384
393
|
- **npm** / **yarn** / **pnpm** / **bun**
|
|
385
|
-
-
|
|
394
|
+
- An existing React project (Vite, CRA, or custom setup)
|
|
395
|
+
|
|
396
|
+
---
|
|
386
397
|
|
|
387
398
|
## 🗺️ Roadmap
|
|
388
399
|
|
|
389
|
-
### v1.
|
|
390
|
-
- [x]
|
|
391
|
-
- [x]
|
|
392
|
-
- [x]
|
|
393
|
-
- [x]
|
|
400
|
+
### v1.1 ✅ (Current)
|
|
401
|
+
- [x] Plugin tracking system (.configjsrc)
|
|
402
|
+
- [x] Plugin detection (package.json + tracker)
|
|
403
|
+
- [x] Enhanced console UX with colors
|
|
404
|
+
- [x] Sequential installation (prevents corruption)
|
|
405
|
+
- [x] 40+ plugins across 10 categories
|
|
406
|
+
|
|
407
|
+
### v1.2 (Q2 2025)
|
|
408
|
+
- [ ] Configuration presets (starter templates)
|
|
409
|
+
- [ ] Plugin marketplace
|
|
410
|
+
- [ ] Interactive upgrade command
|
|
411
|
+
- [ ] Conflict resolution wizard
|
|
394
412
|
|
|
395
|
-
###
|
|
413
|
+
### v2.0 (Q3 2025)
|
|
396
414
|
- [ ] Support Next.js
|
|
397
415
|
- [ ] Support Remix
|
|
398
|
-
- [ ]
|
|
399
|
-
- [ ]
|
|
416
|
+
- [ ] Support Astro
|
|
417
|
+
- [ ] Web UI for configuration
|
|
400
418
|
|
|
401
|
-
### v2.
|
|
419
|
+
### v2.x (Future)
|
|
402
420
|
- [ ] Support Vue 3
|
|
403
421
|
- [ ] Support Svelte
|
|
404
|
-
- [ ] Interface web de configuration
|
|
405
|
-
|
|
406
|
-
### v2.x (Future)
|
|
407
|
-
- [ ] Templates personnalisables
|
|
408
|
-
- [ ] Marketplace de plugins
|
|
409
422
|
- [ ] React Native support
|
|
423
|
+
- [ ] Custom plugin templates
|
|
410
424
|
|
|
411
|
-
|
|
425
|
+
---
|
|
412
426
|
|
|
413
|
-
|
|
427
|
+
## 💖 Support This Project
|
|
414
428
|
|
|
415
|
-
|
|
429
|
+
If ConfigJS saves you time and makes your life easier, consider sponsoring the project:
|
|
416
430
|
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
- [Projen](https://projen.io)
|
|
431
|
+
**[❤️ Sponsor on GitHub](https://github.com/sponsors/julien-lin)**
|
|
432
|
+
|
|
433
|
+
Your support helps maintain and improve ConfigJS for the entire community!
|
|
421
434
|
|
|
422
435
|
---
|
|
423
436
|
|
|
424
|
-
|
|
437
|
+
## 📄 License
|
|
438
|
+
|
|
439
|
+
[MIT](./LICENSE) © [Julien Lin](https://github.com/julien-lin)
|
|
425
440
|
|
|
426
|
-
|
|
441
|
+
---
|
|
442
|
+
|
|
443
|
+
## 🙏 Acknowledgments
|
|
444
|
+
|
|
445
|
+
Inspired by the best practices from:
|
|
446
|
+
- [Vite](https://vitejs.dev) - Lightning-fast build tool
|
|
447
|
+
- [Create T3 App](https://create.t3.gg) - Type-safe full-stack toolkit
|
|
448
|
+
- [Projen](https://projen.io) - Project configuration as code
|
|
449
|
+
|
|
450
|
+
---
|
|
427
451
|
|
|
428
|
-
|
|
452
|
+
**Made with ❤️ for the frontend community**
|
|
429
453
|
|
|
430
|
-
|
|
454
|
+
[Changelog](./CHANGELOG.md) • [Issues](https://github.com/julien-lin/orchestrateur-framework/issues) • [Contributing](./docs/CONTRIBUTING.md)
|
|
431
455
|
|