@t1ep1l0t/create-fsd 2.0.1 → 3.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 +105 -49
- package/bin/cli.js +36 -12
- package/package.json +8 -4
- package/templates/react-ts/.editorconfig +12 -0
- package/templates/react-ts/.env.example +1 -0
- package/templates/react-ts/.prettierignore +7 -0
- package/templates/react-ts/.prettierrc +10 -0
- package/templates/react-ts/.vscode/extensions.json +7 -0
- package/templates/react-ts/README.md +70 -0
- package/templates/react-ts/eslint.config.js +143 -0
- package/templates/react-ts/index.html +13 -0
- package/templates/react-ts/package.json +55 -0
- package/templates/react-ts/public/locales/en/basic.json +9 -0
- package/templates/react-ts/public/locales/ru/basic.json +9 -0
- package/templates/react-ts/src/app/App.tsx +11 -0
- package/templates/react-ts/src/app/providers/i18n/index.ts +37 -0
- package/templates/react-ts/src/app/providers/router/index.tsx +25 -0
- package/templates/react-ts/src/app/styles/global.css +15 -0
- package/templates/react-ts/src/app/styles/index.css +9 -0
- package/templates/react-ts/src/entities/.gitkeep +0 -0
- package/templates/react-ts/src/features/.gitkeep +0 -0
- package/templates/react-ts/src/main.tsx +14 -0
- package/templates/react-ts/src/pages/about/AboutPage.tsx +91 -0
- package/templates/react-ts/src/pages/about/index.ts +1 -0
- package/templates/react-ts/src/pages/home/HomePage.tsx +94 -0
- package/templates/react-ts/src/pages/home/index.ts +1 -0
- package/templates/react-ts/src/shared/api/client.ts +32 -0
- package/templates/react-ts/src/shared/api/query-client.ts +11 -0
- package/templates/react-ts/src/shared/store/counter.ts +15 -0
- package/templates/react-ts/src/shared/ui/Button/Button.tsx +31 -0
- package/templates/react-ts/src/shared/ui/Button/index.ts +1 -0
- package/templates/react-ts/src/shared/ui/Card/Card.tsx +16 -0
- package/templates/react-ts/src/shared/ui/Card/index.ts +1 -0
- package/templates/react-ts/src/vite-env.d.ts +10 -0
- package/templates/react-ts/src/widgets/Header/Header.tsx +45 -0
- package/templates/react-ts/src/widgets/Header/index.ts +1 -0
- package/templates/react-ts/src/widgets/layouts/BaseLayout/BaseLayout.tsx +13 -0
- package/templates/react-ts/src/widgets/layouts/BaseLayout/index.ts +1 -0
- package/templates/react-ts/tsconfig.app.json +39 -0
- package/templates/react-ts/tsconfig.json +37 -0
- package/templates/react-ts/tsconfig.node.json +11 -0
- package/templates/react-ts/vite.config.ts +23 -0
package/README.md
CHANGED
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
|
|
15
15
|
## 📖 About
|
|
16
16
|
|
|
17
|
-
**@t1ep1l0t/create-fsd** is a powerful CLI tool that helps you quickly bootstrap production-ready
|
|
17
|
+
**@t1ep1l0t/create-fsd** is a powerful CLI tool that helps you quickly bootstrap production-ready frontend applications following the [Feature-Sliced Design (FSD)](https://feature-sliced.design/) architectural methodology. Create fully configured projects with **JavaScript** or **TypeScript** in seconds, and generate FSD-compliant structures for features, entities, widgets, and pages on-demand!
|
|
18
18
|
|
|
19
|
-
> 🎯
|
|
19
|
+
> 🎯 **Supports both JavaScript and TypeScript** with automatic project type detection
|
|
20
20
|
|
|
21
21
|
---
|
|
22
22
|
|
|
@@ -25,15 +25,20 @@
|
|
|
25
25
|
### 🏗️ **Architecture**
|
|
26
26
|
- **Feature-Sliced Design (FSD)** - Scalable and maintainable project structure
|
|
27
27
|
- **FSD Structure Generator** - Quickly generate features, entities, widgets, and pages
|
|
28
|
+
- **Auto-detection** - Automatically detects TypeScript/JavaScript and creates appropriate files
|
|
28
29
|
- Clear separation of concerns across layers
|
|
29
30
|
- Ready-to-use folder structure with automated scaffolding
|
|
30
31
|
|
|
31
|
-
### ⚡ **
|
|
32
|
+
### ⚡ **Language Support**
|
|
33
|
+
- **JavaScript & TypeScript** - Full support for both languages
|
|
34
|
+
- **Smart Detection** - Automatically detects project type when generating structures
|
|
35
|
+
- **Type Safety** - TypeScript templates with proper typing for all libraries
|
|
36
|
+
- **Zero Config** - Works out of the box with optimal settings
|
|
37
|
+
|
|
38
|
+
### 📦 **Modern Stack** (React Template)
|
|
32
39
|
- **React 18** - Latest React with concurrent features
|
|
33
40
|
- **Vite** - Lightning-fast build tool and dev server
|
|
34
41
|
- **TailwindCSS v4** - Utility-first CSS framework
|
|
35
|
-
|
|
36
|
-
### 📦 **Pre-configured Libraries**
|
|
37
42
|
- **React Router DOM** - Declarative routing
|
|
38
43
|
- **Zustand** - Lightweight state management
|
|
39
44
|
- **Axios** - HTTP client with interceptors configured
|
|
@@ -44,44 +49,47 @@
|
|
|
44
49
|
### 🎨 **Developer Experience**
|
|
45
50
|
- Path aliases configured (`@app`, `@pages`, `@widgets`, `@features`, `@entities`, `@shared`)
|
|
46
51
|
- Example code demonstrating best practices
|
|
52
|
+
- Full TypeScript support with type definitions
|
|
47
53
|
- Zero configuration needed - start coding immediately
|
|
48
54
|
|
|
49
55
|
---
|
|
50
56
|
|
|
51
57
|
## 🚀 Quick Start
|
|
52
58
|
|
|
53
|
-
###
|
|
59
|
+
### Create a JavaScript Project
|
|
54
60
|
|
|
55
61
|
```bash
|
|
56
|
-
|
|
62
|
+
npx @t1ep1l0t/create-fsd app my-app
|
|
57
63
|
cd my-app
|
|
58
64
|
npm run dev
|
|
59
65
|
```
|
|
60
66
|
|
|
61
|
-
###
|
|
67
|
+
### Create a TypeScript Project
|
|
62
68
|
|
|
63
69
|
```bash
|
|
64
|
-
npx @t1ep1l0t/create-fsd my-app
|
|
70
|
+
npx @t1ep1l0t/create-fsd app my-app --typescript
|
|
65
71
|
cd my-app
|
|
66
72
|
npm run dev
|
|
67
73
|
```
|
|
68
74
|
|
|
69
|
-
### With
|
|
75
|
+
### With npm create
|
|
70
76
|
|
|
71
77
|
```bash
|
|
72
|
-
|
|
78
|
+
npm create @t1ep1l0t/fsd app my-app
|
|
79
|
+
cd my-app
|
|
80
|
+
npm run dev
|
|
73
81
|
```
|
|
74
82
|
|
|
75
83
|
---
|
|
76
84
|
|
|
77
|
-
## 🏗️ FSD
|
|
85
|
+
## 🏗️ FSD Architecture Generator
|
|
78
86
|
|
|
79
|
-
After creating your project, you can use the `
|
|
87
|
+
After creating your project, you can use the `arch` command to quickly generate FSD-compliant directory structures for features, entities, widgets, and pages. The command **automatically detects** whether your project uses TypeScript or JavaScript and creates the appropriate files.
|
|
80
88
|
|
|
81
89
|
### Usage
|
|
82
90
|
|
|
83
91
|
```bash
|
|
84
|
-
create-fsd
|
|
92
|
+
create-fsd arch [options]
|
|
85
93
|
```
|
|
86
94
|
|
|
87
95
|
### Options
|
|
@@ -97,30 +105,47 @@ create-fsd fsd [options]
|
|
|
97
105
|
|
|
98
106
|
### Examples
|
|
99
107
|
|
|
108
|
+
#### TypeScript Project
|
|
100
109
|
```bash
|
|
101
|
-
#
|
|
102
|
-
create-fsd
|
|
110
|
+
# The CLI detects tsconfig.json and creates .ts files automatically
|
|
111
|
+
create-fsd arch -f user-auth -s ui model api -i
|
|
103
112
|
|
|
104
|
-
# Result:
|
|
105
|
-
# src/features/user/
|
|
113
|
+
# Result in TypeScript project:
|
|
114
|
+
# src/features/user-auth/
|
|
106
115
|
# ├── ui/
|
|
107
|
-
# │ └── index.
|
|
116
|
+
# │ └── index.ts
|
|
117
|
+
# ├── model/
|
|
118
|
+
# │ └── index.ts
|
|
119
|
+
# ├── api/
|
|
120
|
+
# │ └── index.ts
|
|
121
|
+
# └── index.ts (exports all segments)
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
#### JavaScript Project
|
|
125
|
+
```bash
|
|
126
|
+
# The CLI detects no tsconfig.json and creates .js files automatically
|
|
127
|
+
create-fsd arch -e product -s model ui -i
|
|
128
|
+
|
|
129
|
+
# Result in JavaScript project:
|
|
130
|
+
# src/entities/product/
|
|
108
131
|
# ├── model/
|
|
109
132
|
# │ └── index.js
|
|
133
|
+
# ├── ui/
|
|
134
|
+
# │ └── index.js
|
|
110
135
|
# └── index.js (exports all segments)
|
|
136
|
+
```
|
|
111
137
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
138
|
+
#### More Examples
|
|
139
|
+
```bash
|
|
115
140
|
# Create a widget without index files (uses .gitkeep)
|
|
116
|
-
create-fsd
|
|
141
|
+
create-fsd arch -w header -s ui model
|
|
117
142
|
|
|
118
143
|
# Create a page
|
|
119
|
-
create-fsd
|
|
144
|
+
create-fsd arch -p home -s ui api -i
|
|
120
145
|
|
|
121
146
|
# Add more segments to existing structure
|
|
122
|
-
create-fsd
|
|
123
|
-
# This will add
|
|
147
|
+
create-fsd arch -f user-auth -s config types -i
|
|
148
|
+
# This will add new folders and update the root index file
|
|
124
149
|
```
|
|
125
150
|
|
|
126
151
|
### Common Segment Names
|
|
@@ -145,7 +170,7 @@ src/
|
|
|
145
170
|
├── 📱 app/ # Application initialization layer
|
|
146
171
|
│ ├── providers/ # App providers (Router, i18n, Query Client)
|
|
147
172
|
│ ├── styles/ # Global styles
|
|
148
|
-
│ └── App.jsx
|
|
173
|
+
│ └── App.tsx/jsx # Root component
|
|
149
174
|
│
|
|
150
175
|
├── 📄 pages/ # Pages layer - route components
|
|
151
176
|
│ ├── home/ # Home page
|
|
@@ -163,10 +188,12 @@ src/
|
|
|
163
188
|
│
|
|
164
189
|
└── 🔧 shared/ # Shared layer - reusable code
|
|
165
190
|
├── api/ # API client configuration
|
|
166
|
-
├── store/ #
|
|
191
|
+
├── store/ # State management stores
|
|
167
192
|
└── ui/ # UI kit components
|
|
168
193
|
```
|
|
169
194
|
|
|
195
|
+
> **Note:** TypeScript projects include `.tsx`/`.ts` files, while JavaScript projects use `.jsx`/`.js`
|
|
196
|
+
|
|
170
197
|
### Layer Responsibilities
|
|
171
198
|
|
|
172
199
|
| Layer | Purpose | Examples |
|
|
@@ -198,22 +225,32 @@ The generated project includes working examples for all included libraries:
|
|
|
198
225
|
|
|
199
226
|
## 🛠️ Available Templates
|
|
200
227
|
|
|
201
|
-
| Template | Status | Description |
|
|
202
|
-
|
|
203
|
-
| **React** | ✅ Available | React 18 + Vite + FSD architecture |
|
|
204
|
-
| **Vue** | 🔜 Coming Soon | Vue 3 + Vite + FSD architecture |
|
|
205
|
-
| **Next.js** | 🔜 Coming Soon | Next.js + FSD architecture |
|
|
206
|
-
| **Nuxt** | 🔜 Coming Soon | Nuxt 3 + FSD architecture |
|
|
207
|
-
| **Svelte** | 🔜 Coming Soon | Svelte + Vite + FSD architecture |
|
|
228
|
+
| Template | Language | Status | Description |
|
|
229
|
+
|----------|----------|--------|-------------|
|
|
230
|
+
| **React** | JS / TS | ✅ Available | React 18 + Vite + FSD architecture |
|
|
231
|
+
| **Vue** | JS / TS | 🔜 Coming Soon | Vue 3 + Vite + FSD architecture |
|
|
232
|
+
| **Next.js** | JS / TS | 🔜 Coming Soon | Next.js + FSD architecture |
|
|
233
|
+
| **Nuxt** | JS / TS | 🔜 Coming Soon | Nuxt 3 + FSD architecture |
|
|
234
|
+
| **Svelte** | JS / TS | 🔜 Coming Soon | Svelte + Vite + FSD architecture |
|
|
208
235
|
|
|
209
236
|
---
|
|
210
237
|
|
|
211
238
|
## 📋 CLI Commands
|
|
212
239
|
|
|
213
|
-
###
|
|
240
|
+
### Main Commands
|
|
241
|
+
|
|
242
|
+
```bash
|
|
243
|
+
create-fsd # Show help
|
|
244
|
+
create-fsd app <name> [opts] # Create new project
|
|
245
|
+
create-fsd arch [opts] # Generate FSD structure
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
### `create-fsd app` - Create Project
|
|
249
|
+
|
|
250
|
+
Create a new project from template
|
|
214
251
|
|
|
215
252
|
```bash
|
|
216
|
-
create-fsd <project-name> [options]
|
|
253
|
+
create-fsd app <project-name> [options]
|
|
217
254
|
```
|
|
218
255
|
|
|
219
256
|
#### Options
|
|
@@ -221,24 +258,28 @@ create-fsd <project-name> [options]
|
|
|
221
258
|
| Option | Alias | Description | Default |
|
|
222
259
|
|--------|-------|-------------|---------|
|
|
223
260
|
| `--template <name>` | `-t` | Template to use | `react` |
|
|
261
|
+
| `--typescript` | `-ts` | Use TypeScript instead of JavaScript | `false` |
|
|
224
262
|
|
|
225
263
|
#### Examples
|
|
226
264
|
|
|
227
265
|
```bash
|
|
228
|
-
# Create project
|
|
229
|
-
npx @t1ep1l0t/create-fsd my-app
|
|
266
|
+
# Create JavaScript project (default)
|
|
267
|
+
npx @t1ep1l0t/create-fsd app my-app
|
|
230
268
|
|
|
231
|
-
#
|
|
232
|
-
npx @t1ep1l0t/create-fsd my-app --
|
|
269
|
+
# Create TypeScript project
|
|
270
|
+
npx @t1ep1l0t/create-fsd app my-app --typescript
|
|
271
|
+
npx @t1ep1l0t/create-fsd app my-app -ts
|
|
233
272
|
|
|
234
|
-
#
|
|
235
|
-
npx @t1ep1l0t/create-fsd my-app -t react
|
|
273
|
+
# Specify template explicitly
|
|
274
|
+
npx @t1ep1l0t/create-fsd app my-app -t react -ts
|
|
236
275
|
```
|
|
237
276
|
|
|
238
|
-
### Generate FSD Structure
|
|
277
|
+
### `create-fsd arch` - Generate FSD Structure
|
|
278
|
+
|
|
279
|
+
Generate FSD-compliant architecture structures. Automatically detects project type (TS/JS) and creates appropriate files.
|
|
239
280
|
|
|
240
281
|
```bash
|
|
241
|
-
create-fsd
|
|
282
|
+
create-fsd arch [options]
|
|
242
283
|
```
|
|
243
284
|
|
|
244
285
|
#### Options
|
|
@@ -256,24 +297,39 @@ create-fsd fsd [options]
|
|
|
256
297
|
|
|
257
298
|
```bash
|
|
258
299
|
# Create feature with index files
|
|
259
|
-
create-fsd
|
|
300
|
+
create-fsd arch -f authentication -s ui model api -i
|
|
260
301
|
|
|
261
302
|
# Create entity without index files
|
|
262
|
-
create-fsd
|
|
303
|
+
create-fsd arch -e user -s model api
|
|
263
304
|
|
|
264
305
|
# Create widget
|
|
265
|
-
create-fsd
|
|
306
|
+
create-fsd arch -w sidebar -s ui lib -i
|
|
266
307
|
|
|
267
308
|
# Create page
|
|
268
|
-
create-fsd
|
|
309
|
+
create-fsd arch -p dashboard -s ui model -i
|
|
310
|
+
|
|
311
|
+
# Add more segments to existing structure
|
|
312
|
+
create-fsd arch -f authentication -s config types -i
|
|
269
313
|
```
|
|
270
314
|
|
|
315
|
+
#### Auto-Detection
|
|
316
|
+
|
|
317
|
+
The `arch` command automatically detects your project type:
|
|
318
|
+
|
|
319
|
+
- **TypeScript projects** (with `tsconfig.json`) → creates `.ts`/`.tsx` files
|
|
320
|
+
- **JavaScript projects** (without `tsconfig.json`) → creates `.js`/`.jsx` files
|
|
321
|
+
|
|
271
322
|
---
|
|
272
323
|
|
|
273
324
|
## 🎓 Learn More
|
|
274
325
|
|
|
326
|
+
### Core Concepts
|
|
275
327
|
- [Feature-Sliced Design Documentation](https://feature-sliced.design/)
|
|
328
|
+
- [FSD Best Practices](https://feature-sliced.design/docs/guides)
|
|
329
|
+
|
|
330
|
+
### Technologies (React Template)
|
|
276
331
|
- [React Documentation](https://react.dev/)
|
|
332
|
+
- [TypeScript Documentation](https://www.typescriptlang.org/docs/)
|
|
277
333
|
- [Vite Documentation](https://vitejs.dev/)
|
|
278
334
|
- [TailwindCSS Documentation](https://tailwindcss.com/)
|
|
279
335
|
|
package/bin/cli.js
CHANGED
|
@@ -13,16 +13,35 @@ const __dirname = path.dirname(__filename);
|
|
|
13
13
|
|
|
14
14
|
const program = new Command();
|
|
15
15
|
|
|
16
|
+
// Helper function to detect if project uses TypeScript
|
|
17
|
+
function isTypeScriptProject() {
|
|
18
|
+
const tsconfigPath = path.join(process.cwd(), 'tsconfig.json');
|
|
19
|
+
return fs.existsSync(tsconfigPath);
|
|
20
|
+
}
|
|
21
|
+
|
|
16
22
|
program
|
|
17
23
|
.name('create-fsd')
|
|
18
|
-
.description('CLI
|
|
19
|
-
.version('
|
|
24
|
+
.description('CLI for Feature-Sliced Design architecture')
|
|
25
|
+
.version('3.0.0');
|
|
26
|
+
|
|
27
|
+
// App creation command
|
|
28
|
+
program
|
|
29
|
+
.command('app')
|
|
30
|
+
.description('Create a new project from template')
|
|
20
31
|
.argument('<project-name>', 'name of the project')
|
|
21
32
|
.option('-t, --template <template>', 'template to use', 'react')
|
|
33
|
+
.option('-ts, --typescript', 'use TypeScript instead of JavaScript', false)
|
|
22
34
|
.action(async (projectName, options) => {
|
|
23
|
-
const { template } = options;
|
|
35
|
+
const { template, typescript } = options;
|
|
24
36
|
|
|
25
|
-
|
|
37
|
+
// Determine the actual template to use
|
|
38
|
+
let actualTemplate = template;
|
|
39
|
+
if (typescript && template === 'react') {
|
|
40
|
+
actualTemplate = 'react-ts';
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const languageLabel = typescript ? 'TypeScript' : 'JavaScript';
|
|
44
|
+
console.log(chalk.blue.bold(`\n🚀 Creating ${projectName} with ${template} template (${languageLabel})...\n`));
|
|
26
45
|
|
|
27
46
|
const targetDir = path.join(process.cwd(), projectName);
|
|
28
47
|
|
|
@@ -35,10 +54,10 @@ program
|
|
|
35
54
|
// Create project directory
|
|
36
55
|
fs.mkdirSync(targetDir, { recursive: true });
|
|
37
56
|
|
|
38
|
-
const templateDir = path.join(__dirname, '..', 'templates',
|
|
57
|
+
const templateDir = path.join(__dirname, '..', 'templates', actualTemplate);
|
|
39
58
|
|
|
40
59
|
if (!fs.existsSync(templateDir)) {
|
|
41
|
-
console.log(chalk.red(`❌ Template ${
|
|
60
|
+
console.log(chalk.red(`❌ Template ${actualTemplate} not found!`));
|
|
42
61
|
process.exit(1);
|
|
43
62
|
}
|
|
44
63
|
|
|
@@ -81,9 +100,9 @@ program
|
|
|
81
100
|
console.log();
|
|
82
101
|
});
|
|
83
102
|
|
|
84
|
-
// FSD
|
|
103
|
+
// FSD architecture generation command
|
|
85
104
|
program
|
|
86
|
-
.command('
|
|
105
|
+
.command('arch')
|
|
87
106
|
.description('Generate FSD (Feature-Sliced Design) structure')
|
|
88
107
|
.option('-f, --feature <name>', 'create feature in features/')
|
|
89
108
|
.option('-e, --entity <name>', 'create entity in entities/')
|
|
@@ -94,6 +113,10 @@ program
|
|
|
94
113
|
.action(async (options) => {
|
|
95
114
|
const { feature, entity, widget, page, segments, index } = options;
|
|
96
115
|
|
|
116
|
+
// Detect project type
|
|
117
|
+
const isTS = isTypeScriptProject();
|
|
118
|
+
const fileExtension = isTS ? 'ts' : 'js';
|
|
119
|
+
|
|
97
120
|
// Determine layer and name based on which flag was used
|
|
98
121
|
let layer, name, layerType;
|
|
99
122
|
|
|
@@ -125,6 +148,7 @@ program
|
|
|
125
148
|
}
|
|
126
149
|
|
|
127
150
|
console.log(chalk.blue.bold(`\n🏗️ Generating FSD structure...\n`));
|
|
151
|
+
console.log(chalk.cyan(`Project type: ${isTS ? 'TypeScript' : 'JavaScript'}`));
|
|
128
152
|
console.log(chalk.cyan(`Layer: ${layer}`));
|
|
129
153
|
console.log(chalk.cyan(`${layerType}: ${name}`));
|
|
130
154
|
console.log(chalk.cyan(`Segments: ${segments.join(', ')}`));
|
|
@@ -150,7 +174,7 @@ program
|
|
|
150
174
|
|
|
151
175
|
// Create index file in segment if requested
|
|
152
176
|
if (index) {
|
|
153
|
-
const segmentIndexPath = path.join(segmentDir,
|
|
177
|
+
const segmentIndexPath = path.join(segmentDir, `index.${fileExtension}`);
|
|
154
178
|
fs.writeFileSync(segmentIndexPath, '');
|
|
155
179
|
} else {
|
|
156
180
|
// Create a .gitkeep file to ensure empty directories are tracked
|
|
@@ -169,7 +193,7 @@ program
|
|
|
169
193
|
if (index) {
|
|
170
194
|
const indexSpinner = ora('Creating root index file...').start();
|
|
171
195
|
try {
|
|
172
|
-
const indexPath = path.join(baseDir,
|
|
196
|
+
const indexPath = path.join(baseDir, `index.${fileExtension}`);
|
|
173
197
|
|
|
174
198
|
// If index file exists, read existing exports and merge with new ones
|
|
175
199
|
let existingExports = new Set();
|
|
@@ -216,11 +240,11 @@ program
|
|
|
216
240
|
const prefix = index ? '├──' : (isLast ? '└──' : '├──');
|
|
217
241
|
console.log(chalk.white(` ${prefix} ${segment}/`));
|
|
218
242
|
if (index) {
|
|
219
|
-
console.log(chalk.white(` │ └── index
|
|
243
|
+
console.log(chalk.white(` │ └── index.${fileExtension}`));
|
|
220
244
|
}
|
|
221
245
|
});
|
|
222
246
|
if (index) {
|
|
223
|
-
console.log(chalk.white(` └── index
|
|
247
|
+
console.log(chalk.white(` └── index.${fileExtension}`));
|
|
224
248
|
}
|
|
225
249
|
console.log();
|
|
226
250
|
});
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@t1ep1l0t/create-fsd",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "CLI
|
|
3
|
+
"version": "3.0.0",
|
|
4
|
+
"description": "CLI for Feature-Sliced Design architecture. Create production-ready projects from framework templates and generate FSD structures with single commands.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"create-fsd": "./bin/cli.js"
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"README.md"
|
|
13
13
|
],
|
|
14
14
|
"scripts": {
|
|
15
|
-
"test": "node bin/cli.js test-project --template react"
|
|
15
|
+
"test": "node bin/cli.js app test-project --template react"
|
|
16
16
|
},
|
|
17
17
|
"keywords": [
|
|
18
18
|
"cli",
|
|
@@ -20,7 +20,11 @@
|
|
|
20
20
|
"feature-sliced-design",
|
|
21
21
|
"react",
|
|
22
22
|
"vite",
|
|
23
|
-
"template"
|
|
23
|
+
"template",
|
|
24
|
+
"typescript",
|
|
25
|
+
"javascript",
|
|
26
|
+
"scaffold",
|
|
27
|
+
"generator"
|
|
24
28
|
],
|
|
25
29
|
"author": "t1ep1l0t",
|
|
26
30
|
"license": "MIT",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
VITE_API_URL=https://api.example.com
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# FSD React Application
|
|
2
|
+
|
|
3
|
+
A modern React application built with Feature-Sliced Design architecture.
|
|
4
|
+
|
|
5
|
+
## Technologies
|
|
6
|
+
|
|
7
|
+
- **React 18** - UI library
|
|
8
|
+
- **Vite** - Build tool and dev server
|
|
9
|
+
- **React Router DOM** - Client-side routing
|
|
10
|
+
- **Zustand** - State management
|
|
11
|
+
- **Axios** - HTTP client
|
|
12
|
+
- **React Query** - Server state management
|
|
13
|
+
- **i18next** - Internationalization
|
|
14
|
+
- **TailwindCSS v4** - Styling
|
|
15
|
+
|
|
16
|
+
## Project Structure
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
src/
|
|
20
|
+
├── app/ # Application initialization
|
|
21
|
+
│ ├── providers/ # Context providers (router, i18n)
|
|
22
|
+
│ └── styles/ # Global styles
|
|
23
|
+
├── pages/ # Page components
|
|
24
|
+
├── widgets/ # Composite UI components
|
|
25
|
+
├── features/ # Business features
|
|
26
|
+
├── entities/ # Business entities
|
|
27
|
+
└── shared/ # Shared code
|
|
28
|
+
├── api/ # API client configuration
|
|
29
|
+
├── store/ # Global stores
|
|
30
|
+
└── ui/ # Reusable UI components
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Getting Started
|
|
34
|
+
|
|
35
|
+
### Install dependencies
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
npm install
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Development
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
npm run dev
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Build for production
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
npm run build
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Preview production build
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
npm run preview
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Configuration
|
|
60
|
+
|
|
61
|
+
- **API URL**: Set `VITE_API_URL` in `.env` file
|
|
62
|
+
- **Languages**: Configure in `src/app/providers/i18n/index.js`
|
|
63
|
+
- **Routes**: Define in `src/app/providers/router/index.jsx`
|
|
64
|
+
- **Tailwind**: Customize in `src/app/styles/index.css`
|
|
65
|
+
|
|
66
|
+
## Learn More
|
|
67
|
+
|
|
68
|
+
- [Feature-Sliced Design](https://feature-sliced.design/)
|
|
69
|
+
- [React Documentation](https://react.dev/)
|
|
70
|
+
- [Vite Guide](https://vitejs.dev/guide/)
|