@daawoonkim/create-arch-app 0.1.0 → 0.2.1
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/.github/WORKFLOWS.md +255 -0
- package/.github/workflows/deploy-main.yml +101 -0
- package/.github/workflows/lint.yml +33 -0
- package/.github/workflows/publish.yml +82 -0
- package/.github/workflows/test.yml +52 -0
- package/CHANGELOG.ko.md +72 -0
- package/CHANGELOG.md +71 -0
- package/CONTRIBUTING.md +172 -0
- package/PUBLISHING.md +304 -0
- package/README.ko.md +302 -0
- package/README.md +151 -116
- package/create-arch-app_mvp_faa8b53b.plan.md +1 -1
- package/dist/generators/index.js +69 -9
- package/dist/generators/index.js.map +1 -1
- package/dist/generators/nextjs.d.ts.map +1 -1
- package/dist/generators/nextjs.js +107 -50
- package/dist/generators/nextjs.js.map +1 -1
- package/dist/generators/react.d.ts.map +1 -1
- package/dist/generators/react.js +23 -1
- package/dist/generators/react.js.map +1 -1
- package/dist/prompts/projectSetup.d.ts.map +1 -1
- package/dist/prompts/projectSetup.js +22 -0
- package/dist/prompts/projectSetup.js.map +1 -1
- package/dist/types.d.ts +4 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/apiGenerator.d.ts +4 -0
- package/dist/utils/apiGenerator.d.ts.map +1 -0
- package/dist/utils/apiGenerator.js +440 -0
- package/dist/utils/apiGenerator.js.map +1 -0
- package/dist/utils/dependencies.d.ts.map +1 -1
- package/dist/utils/dependencies.js +15 -0
- package/dist/utils/dependencies.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,169 +1,192 @@
|
|
|
1
1
|
# create-arch-app
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/@daawoonkim/create-arch-app)
|
|
4
|
+
[](https://www.npmjs.com/package/@daawoonkim/create-arch-app)
|
|
5
|
+
[](https://opensource.org/licenses/MIT)
|
|
6
|
+

|
|
7
|
+
[](https://github.com/hec8897/create-arch-app/actions/workflows/test.yml)
|
|
8
|
+
[](https://github.com/hec8897/create-arch-app/actions/workflows/lint.yml)
|
|
4
9
|
|
|
5
|
-
|
|
10
|
+
**🌐 Language**: **English** | [한국어](./README.ko.md)
|
|
6
11
|
|
|
7
|
-
|
|
12
|
+
An interactive CLI tool to create React/Next.js projects with DDD, Clean Architecture, and Atomic Design patterns.
|
|
13
|
+
|
|
14
|
+
**📦 npm**: https://www.npmjs.com/package/@daawoonkim/create-arch-app
|
|
15
|
+
|
|
16
|
+
**📝 CHANGELOG**: [English](./CHANGELOG.md) | [한국어](./CHANGELOG.ko.md)
|
|
17
|
+
|
|
18
|
+
> ⚠️ **Currently in MVP (Minimum Viable Product) stage.** Core features are working, but actively developing and accepting feedback. Please report issues or suggestions on [GitHub Issues](https://github.com/hec8897/create-arch-app/issues)!
|
|
19
|
+
|
|
20
|
+
## Features
|
|
21
|
+
|
|
22
|
+
✨ **4 Architecture Patterns**
|
|
8
23
|
- DDD (Domain-Driven Design)
|
|
9
24
|
- Clean Architecture
|
|
10
25
|
- Atomic Design
|
|
11
|
-
- Default (
|
|
26
|
+
- Default (simple structure)
|
|
12
27
|
|
|
13
|
-
🚀
|
|
28
|
+
🚀 **Framework Options**
|
|
14
29
|
- React (with Vite)
|
|
15
30
|
- Next.js (App Router / Pages Router)
|
|
16
31
|
|
|
17
|
-
💎 **TypeScript
|
|
32
|
+
💎 **TypeScript by Default**
|
|
18
33
|
|
|
19
|
-
🎨
|
|
34
|
+
🎨 **Styling Options**
|
|
20
35
|
- Tailwind CSS
|
|
21
36
|
- CSS Modules
|
|
22
37
|
|
|
23
|
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
|
|
38
|
+
🌐 **API Integration**
|
|
39
|
+
- HTTP Clients: Axios, Fetch API
|
|
40
|
+
- Data Fetching: TanStack Query (React Query), SWR
|
|
41
|
+
|
|
42
|
+
📦 **Optional Libraries**
|
|
43
|
+
- State Management: Zustand, Context API
|
|
44
|
+
- Forms: React Hook Form
|
|
45
|
+
- Testing: Vitest + Testing Library
|
|
27
46
|
|
|
28
|
-
##
|
|
47
|
+
## Installation & Usage
|
|
29
48
|
|
|
30
|
-
###
|
|
49
|
+
### Quick Start with npx (Recommended)
|
|
31
50
|
|
|
32
51
|
```bash
|
|
33
|
-
#
|
|
52
|
+
# Create project in a new directory
|
|
34
53
|
npx @daawoonkim/create-arch-app my-app
|
|
35
54
|
|
|
36
|
-
#
|
|
55
|
+
# Or create in the current directory
|
|
37
56
|
npx @daawoonkim/create-arch-app .
|
|
38
57
|
```
|
|
39
58
|
|
|
40
|
-
###
|
|
59
|
+
### Global Installation
|
|
41
60
|
|
|
42
61
|
```bash
|
|
43
62
|
npm install -g @daawoonkim/create-arch-app
|
|
44
63
|
|
|
45
|
-
#
|
|
64
|
+
# Create project in a new directory
|
|
46
65
|
create-arch-app my-app
|
|
47
66
|
|
|
48
|
-
#
|
|
67
|
+
# Create in current directory
|
|
49
68
|
create-arch-app .
|
|
50
69
|
```
|
|
51
70
|
|
|
52
|
-
>
|
|
71
|
+
> **Note**: When using current directory (`.`), the directory must be empty.
|
|
53
72
|
|
|
54
|
-
###
|
|
73
|
+
### Interactive Prompts
|
|
55
74
|
|
|
56
|
-
CLI
|
|
75
|
+
When you run the CLI, you'll answer these questions:
|
|
57
76
|
|
|
58
|
-
1.
|
|
59
|
-
2. **Next.js
|
|
60
|
-
3.
|
|
61
|
-
4.
|
|
62
|
-
5.
|
|
63
|
-
6.
|
|
64
|
-
7.
|
|
65
|
-
8.
|
|
77
|
+
1. **Framework**: React or Next.js
|
|
78
|
+
2. **Next.js Version** (Next.js only): Latest (recommended), 15.x, 14.x, 13.x
|
|
79
|
+
3. **Router** (Next.js only): App Router (recommended) or Pages Router
|
|
80
|
+
4. **Architecture Pattern**: DDD, Clean, Atomic, Default
|
|
81
|
+
5. **Styling**: Tailwind CSS or CSS Modules
|
|
82
|
+
6. **State Management**: Zustand, Context API, None
|
|
83
|
+
7. **Form Library**: React Hook Form or None
|
|
84
|
+
8. **HTTP Client**: Axios, Fetch API, None
|
|
85
|
+
9. **Data Fetching**: TanStack Query (React Query), SWR, None
|
|
86
|
+
10. **Testing**: Include Vitest + Testing Library
|
|
66
87
|
|
|
67
|
-
##
|
|
88
|
+
## Example Usage
|
|
68
89
|
|
|
69
90
|
```bash
|
|
70
91
|
npx @daawoonkim/create-arch-app my-enterprise-app
|
|
71
92
|
|
|
72
|
-
#
|
|
73
|
-
?
|
|
74
|
-
? Next.js
|
|
75
|
-
? Next.js
|
|
76
|
-
?
|
|
77
|
-
?
|
|
78
|
-
?
|
|
79
|
-
?
|
|
80
|
-
?
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
93
|
+
# Interactive prompts
|
|
94
|
+
? Select framework: Next.js
|
|
95
|
+
? Select Next.js version: Latest (Recommended)
|
|
96
|
+
? Select Next.js router: App Router (Recommended)
|
|
97
|
+
? Select architecture pattern: DDD (Domain-Driven Design)
|
|
98
|
+
? Select styling tool: Tailwind CSS
|
|
99
|
+
? Select state management: Zustand
|
|
100
|
+
? Select form library: React Hook Form
|
|
101
|
+
? Select HTTP client: Axios (Recommended)
|
|
102
|
+
? Select data fetching library: TanStack Query (React Query) - Recommended
|
|
103
|
+
? Include testing tools? Yes
|
|
104
|
+
|
|
105
|
+
✨ Creating project...
|
|
106
|
+
📦 Setting up TypeScript project (default)
|
|
107
|
+
🚀 Using Next.js App Router
|
|
108
|
+
✅ Project created!
|
|
109
|
+
|
|
110
|
+
🎉 Project successfully created!
|
|
111
|
+
|
|
112
|
+
Get started with:
|
|
90
113
|
cd my-enterprise-app
|
|
91
114
|
npm install
|
|
92
115
|
npm run dev
|
|
93
116
|
```
|
|
94
117
|
|
|
95
|
-
##
|
|
118
|
+
## Architecture Patterns
|
|
96
119
|
|
|
97
120
|
### DDD (Domain-Driven Design)
|
|
98
121
|
|
|
99
|
-
|
|
122
|
+
Perfect for enterprise-grade applications.
|
|
100
123
|
|
|
101
124
|
```
|
|
102
|
-
domain/ #
|
|
125
|
+
domain/ # Business entities and logic
|
|
103
126
|
├── entities/
|
|
104
127
|
├── repositories/
|
|
105
128
|
└── services/
|
|
106
|
-
application/ #
|
|
129
|
+
application/ # Use cases
|
|
107
130
|
├── usecases/
|
|
108
131
|
└── ports/
|
|
109
|
-
infrastructure/ #
|
|
132
|
+
infrastructure/ # External service integration
|
|
110
133
|
├── api/
|
|
111
134
|
└── persistence/
|
|
112
|
-
presentation/ # UI
|
|
135
|
+
presentation/ # UI components
|
|
113
136
|
├── components/
|
|
114
137
|
└── pages/
|
|
115
138
|
```
|
|
116
139
|
|
|
117
140
|
### Clean Architecture
|
|
118
141
|
|
|
119
|
-
|
|
142
|
+
Focuses on dependency rules and layer separation.
|
|
120
143
|
|
|
121
144
|
```
|
|
122
|
-
core/ #
|
|
145
|
+
core/ # Business logic
|
|
123
146
|
├── entities/
|
|
124
147
|
├── usecases/
|
|
125
148
|
└── interfaces/
|
|
126
|
-
features/ #
|
|
149
|
+
features/ # Feature modules
|
|
127
150
|
└── [feature]/
|
|
128
151
|
├── domain/
|
|
129
152
|
├── data/
|
|
130
153
|
└── presentation/
|
|
131
|
-
shared/ #
|
|
154
|
+
shared/ # Shared components
|
|
132
155
|
├── components/
|
|
133
156
|
└── utils/
|
|
134
157
|
```
|
|
135
158
|
|
|
136
159
|
### Atomic Design
|
|
137
160
|
|
|
138
|
-
|
|
161
|
+
Optimized for UI component-driven development.
|
|
139
162
|
|
|
140
163
|
```
|
|
141
164
|
components/
|
|
142
|
-
├── atoms/ #
|
|
143
|
-
├── molecules/ # atoms
|
|
144
|
-
├── organisms/ # molecules
|
|
145
|
-
├── templates/ #
|
|
146
|
-
└── pages/ #
|
|
165
|
+
├── atoms/ # Smallest UI units
|
|
166
|
+
├── molecules/ # Combinations of atoms
|
|
167
|
+
├── organisms/ # Combinations of molecules
|
|
168
|
+
├── templates/ # Page layouts
|
|
169
|
+
└── pages/ # Actual pages
|
|
147
170
|
hooks/
|
|
148
171
|
utils/
|
|
149
172
|
```
|
|
150
173
|
|
|
151
174
|
### Default
|
|
152
175
|
|
|
153
|
-
|
|
176
|
+
Simple structure for quick start.
|
|
154
177
|
|
|
155
178
|
```
|
|
156
179
|
components/
|
|
157
180
|
hooks/
|
|
158
|
-
pages/ (
|
|
181
|
+
pages/ (or app/)
|
|
159
182
|
utils/
|
|
160
183
|
styles/
|
|
161
184
|
types/
|
|
162
185
|
```
|
|
163
186
|
|
|
164
|
-
##
|
|
187
|
+
## Generated File Structure
|
|
165
188
|
|
|
166
|
-
### React
|
|
189
|
+
### React Project
|
|
167
190
|
|
|
168
191
|
```
|
|
169
192
|
my-app/
|
|
@@ -179,89 +202,101 @@ my-app/
|
|
|
179
202
|
└── README.md
|
|
180
203
|
```
|
|
181
204
|
|
|
182
|
-
### Next.js
|
|
205
|
+
### Next.js Project (App Router)
|
|
183
206
|
|
|
184
207
|
```
|
|
185
208
|
my-app/
|
|
186
|
-
├──
|
|
187
|
-
│ ├──
|
|
188
|
-
│ ├──
|
|
189
|
-
│
|
|
190
|
-
|
|
209
|
+
├── src/
|
|
210
|
+
│ ├── app/
|
|
211
|
+
│ │ ├── layout.tsx
|
|
212
|
+
│ │ ├── page.tsx
|
|
213
|
+
│ │ └── globals.css
|
|
214
|
+
│ └── [architecture folders]
|
|
191
215
|
├── next.config.js
|
|
192
216
|
├── tsconfig.json
|
|
193
217
|
├── package.json
|
|
194
218
|
└── README.md
|
|
195
219
|
```
|
|
196
220
|
|
|
197
|
-
### Next.js
|
|
221
|
+
### Next.js Project (Pages Router)
|
|
198
222
|
|
|
199
223
|
```
|
|
200
224
|
my-app/
|
|
201
|
-
├──
|
|
202
|
-
│ ├──
|
|
203
|
-
│ ├──
|
|
204
|
-
│
|
|
205
|
-
|
|
206
|
-
│
|
|
207
|
-
|
|
225
|
+
├── src/
|
|
226
|
+
│ ├── pages/
|
|
227
|
+
│ │ ├── _app.tsx
|
|
228
|
+
│ │ ├── _document.tsx
|
|
229
|
+
│ │ └── index.tsx
|
|
230
|
+
│ ├── styles/
|
|
231
|
+
│ │ └── globals.css
|
|
232
|
+
│ └── [architecture folders]
|
|
208
233
|
├── next.config.js
|
|
209
234
|
├── tsconfig.json
|
|
210
235
|
├── package.json
|
|
211
236
|
└── README.md
|
|
212
237
|
```
|
|
213
238
|
|
|
214
|
-
##
|
|
239
|
+
## Requirements
|
|
215
240
|
|
|
216
|
-
- Node.js 18.0.0
|
|
241
|
+
- Node.js 18.0.0 or higher
|
|
217
242
|
|
|
218
|
-
##
|
|
243
|
+
## Version History
|
|
219
244
|
|
|
220
|
-
|
|
245
|
+
### v0.2.0 - Latest (2025-01-26)
|
|
221
246
|
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
247
|
+
**Major Updates:**
|
|
248
|
+
- ✅ API library integration (Axios, Fetch API, TanStack Query, SWR)
|
|
249
|
+
- ✅ Architecture-specific API file generation
|
|
250
|
+
- ✅ Improved Next.js project structure (`src/` directory + absolute paths)
|
|
251
|
+
- ✅ CI/CD automation (GitHub Actions)
|
|
252
|
+
- ✅ Automatic npm deployment on main branch merge
|
|
253
|
+
- ✅ Enhanced documentation (CHANGELOG, CONTRIBUTING, WORKFLOWS)
|
|
226
254
|
|
|
227
|
-
|
|
228
|
-
npm install
|
|
255
|
+
See [CHANGELOG.md](./CHANGELOG.md) for details.
|
|
229
256
|
|
|
230
|
-
|
|
231
|
-
npm run build
|
|
257
|
+
### v0.1.0 - MVP Release
|
|
232
258
|
|
|
233
|
-
|
|
234
|
-
|
|
259
|
+
**Features:**
|
|
260
|
+
- ✅ 4 architecture patterns (DDD, Clean Architecture, Atomic Design, Default)
|
|
261
|
+
- ✅ React (Vite) & Next.js (App Router / Pages Router) support
|
|
262
|
+
- ✅ Next.js version selection (Latest, 15.x, 14.x, 13.x)
|
|
263
|
+
- ✅ TypeScript by default
|
|
264
|
+
- ✅ Styling: Tailwind CSS, CSS Modules
|
|
265
|
+
- ✅ State Management: Zustand, Context API
|
|
266
|
+
- ✅ Forms: React Hook Form
|
|
267
|
+
- ✅ Testing: Vitest + Testing Library
|
|
268
|
+
- ✅ Current directory creation support (`.` option)
|
|
269
|
+
- ✅ Automatic folder structure and README generation
|
|
235
270
|
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
271
|
+
## Roadmap
|
|
272
|
+
|
|
273
|
+
### v0.3.0 (Planned)
|
|
274
|
+
- [ ] Additional UI library integration (shadcn/ui, MUI)
|
|
275
|
+
- [ ] More testing and stability improvements
|
|
276
|
+
- [ ] Component generator
|
|
240
277
|
|
|
241
|
-
|
|
278
|
+
### Future Plans
|
|
279
|
+
- [ ] Additional architecture patterns (Feature-Sliced Design, Hexagonal Architecture)
|
|
280
|
+
- [ ] More state management options (Redux Toolkit, Jotai, Recoil)
|
|
281
|
+
- [ ] Authentication integration (NextAuth, Supabase)
|
|
282
|
+
- [ ] ORM integration (Prisma, Drizzle)
|
|
283
|
+
- [ ] Docker setup
|
|
284
|
+
- [ ] Monorepo support (Turborepo)
|
|
242
285
|
|
|
243
|
-
|
|
244
|
-
- [ ] UI 라이브러리 통합 (shadcn/ui, MUI, Ant Design)
|
|
245
|
-
- [ ] 추가 상태관리 옵션 (Redux Toolkit, Jotai, Recoil)
|
|
246
|
-
- [ ] 인증 통합 (NextAuth, Supabase)
|
|
247
|
-
- [ ] ORM 통합 (Prisma, Drizzle)
|
|
248
|
-
- [ ] 컴포넌트 생성기
|
|
249
|
-
- [ ] CI/CD 설정 자동화
|
|
250
|
-
- [ ] Docker 설정 포함
|
|
251
|
-
- [ ] Monorepo 지원 (Turborepo)
|
|
286
|
+
## Contributing
|
|
252
287
|
|
|
253
|
-
|
|
288
|
+
Bug reports, feature suggestions, and PRs are welcome!
|
|
254
289
|
|
|
255
|
-
|
|
290
|
+
See [CONTRIBUTING.md](./CONTRIBUTING.md) for details.
|
|
256
291
|
|
|
257
|
-
##
|
|
292
|
+
## License
|
|
258
293
|
|
|
259
294
|
MIT
|
|
260
295
|
|
|
261
|
-
##
|
|
296
|
+
## Author
|
|
262
297
|
|
|
263
298
|
daawoonkim
|
|
264
299
|
|
|
265
|
-
##
|
|
300
|
+
## Credits
|
|
266
301
|
|
|
267
|
-
|
|
302
|
+
This project is based on modern frontend development best practices and various architectural patterns.
|
package/dist/generators/index.js
CHANGED
|
@@ -93,10 +93,11 @@ async function generateTsConfig(config, projectPath) {
|
|
|
93
93
|
},
|
|
94
94
|
],
|
|
95
95
|
paths: {
|
|
96
|
-
'@/*': ['
|
|
96
|
+
'@/*': ['./src/*'],
|
|
97
97
|
},
|
|
98
|
+
baseUrl: '.',
|
|
98
99
|
},
|
|
99
|
-
include: ['next-env.d.ts', '**/*.ts', '**/*.tsx', '.next/types/**/*.ts'],
|
|
100
|
+
include: ['next-env.d.ts', '**/*.ts', '**/*.tsx', '.next/types/**/*.ts', 'src/**/*.ts', 'src/**/*.tsx'],
|
|
100
101
|
exclude: ['node_modules'],
|
|
101
102
|
};
|
|
102
103
|
await writeJson(path.join(projectPath, 'tsconfig.json'), tsConfig);
|
|
@@ -135,6 +136,67 @@ next-env.d.ts
|
|
|
135
136
|
await createFile(path.join(projectPath, '.gitignore'), content);
|
|
136
137
|
}
|
|
137
138
|
async function generateReadme(config, projectPath) {
|
|
139
|
+
const apiSection = (config.apiClient !== 'none' || config.dataFetching !== 'none') ? `
|
|
140
|
+
## API 통합
|
|
141
|
+
|
|
142
|
+
이 프로젝트는 다음 API 라이브러리를 사용합니다:
|
|
143
|
+
${config.apiClient !== 'none' ? `- **HTTP 클라이언트**: ${config.apiClient === 'axios' ? 'Axios' : 'Fetch API'}` : ''}
|
|
144
|
+
${config.dataFetching !== 'none' ? `- **데이터 페칭**: ${config.dataFetching === 'react-query' ? 'TanStack Query (React Query)' : 'SWR'}` : ''}
|
|
145
|
+
|
|
146
|
+
### API 클라이언트 사용법
|
|
147
|
+
|
|
148
|
+
${config.apiClient === 'axios' ? `\`\`\`typescript
|
|
149
|
+
import { apiClient } from './lib/api';
|
|
150
|
+
|
|
151
|
+
const fetchData = async () => {
|
|
152
|
+
const response = await apiClient.get('/endpoint');
|
|
153
|
+
return response.data;
|
|
154
|
+
};
|
|
155
|
+
\`\`\`` : config.apiClient === 'fetch' ? `\`\`\`typescript
|
|
156
|
+
import { apiClient } from './lib/api';
|
|
157
|
+
|
|
158
|
+
const fetchData = async () => {
|
|
159
|
+
const data = await apiClient.get('/endpoint');
|
|
160
|
+
return data;
|
|
161
|
+
};
|
|
162
|
+
\`\`\`` : ''}
|
|
163
|
+
|
|
164
|
+
${config.dataFetching === 'react-query' ? `### React Query 사용법
|
|
165
|
+
|
|
166
|
+
\`\`\`typescript
|
|
167
|
+
import { useExamples } from './hooks/queries/useExample';
|
|
168
|
+
|
|
169
|
+
const Component = () => {
|
|
170
|
+
const { data, isLoading, error } = useExamples();
|
|
171
|
+
|
|
172
|
+
if (isLoading) return <div>Loading...</div>;
|
|
173
|
+
if (error) return <div>Error occurred</div>;
|
|
174
|
+
|
|
175
|
+
return <div>{/* Use data */}</div>;
|
|
176
|
+
};
|
|
177
|
+
\`\`\`` : config.dataFetching === 'swr' ? `### SWR 사용법
|
|
178
|
+
|
|
179
|
+
\`\`\`typescript
|
|
180
|
+
import { useExamples } from './hooks/queries/useExample';
|
|
181
|
+
|
|
182
|
+
const Component = () => {
|
|
183
|
+
const { data, isLoading, isError } = useExamples();
|
|
184
|
+
|
|
185
|
+
if (isLoading) return <div>Loading...</div>;
|
|
186
|
+
if (isError) return <div>Error occurred</div>;
|
|
187
|
+
|
|
188
|
+
return <div>{/* Use data */}</div>;
|
|
189
|
+
};
|
|
190
|
+
\`\`\`` : ''}
|
|
191
|
+
|
|
192
|
+
### 환경변수 설정
|
|
193
|
+
|
|
194
|
+
\`.env.local\` 파일을 생성하고 API URL을 설정하세요:
|
|
195
|
+
|
|
196
|
+
\`\`\`bash
|
|
197
|
+
${config.framework === 'nextjs' ? 'NEXT_PUBLIC_API_URL' : 'VITE_API_URL'}=http://localhost:3000/api
|
|
198
|
+
\`\`\`
|
|
199
|
+
` : '';
|
|
138
200
|
const content = `# ${config.projectName}
|
|
139
201
|
|
|
140
202
|
이 프로젝트는 **create-arch-app**으로 생성되었습니다.
|
|
@@ -148,6 +210,8 @@ ${config.framework === 'nextjs' ? `- **라우터**: ${config.router === 'app' ?
|
|
|
148
210
|
- **스타일링**: ${config.styling === 'tailwind' ? 'Tailwind CSS' : 'CSS Modules'}
|
|
149
211
|
- **상태관리**: ${config.stateManagement}
|
|
150
212
|
${config.formLibrary !== 'none' ? `- **폼**: ${config.formLibrary}\n` : ''}
|
|
213
|
+
${config.apiClient !== 'none' ? `- **HTTP 클라이언트**: ${config.apiClient === 'axios' ? 'Axios' : 'Fetch'}\n` : ''}
|
|
214
|
+
${config.dataFetching !== 'none' ? `- **데이터 페칭**: ${config.dataFetching === 'react-query' ? 'TanStack Query' : 'SWR'}\n` : ''}
|
|
151
215
|
${config.testing ? '- **테스팅**: Vitest + Testing Library\n' : ''}
|
|
152
216
|
|
|
153
217
|
## 시작하기
|
|
@@ -163,7 +227,7 @@ npm run dev
|
|
|
163
227
|
npm run build
|
|
164
228
|
${config.testing ? '\n# 테스트 실행\nnpm test' : ''}
|
|
165
229
|
\`\`\`
|
|
166
|
-
|
|
230
|
+
${apiSection}
|
|
167
231
|
## 아키텍처 구조
|
|
168
232
|
|
|
169
233
|
### ${config.architecture.toUpperCase()}
|
|
@@ -192,12 +256,8 @@ async function generateTailwindConfig(config, projectPath) {
|
|
|
192
256
|
contentPaths = ['./index.html', './src/**/*.{js,ts,jsx,tsx}'];
|
|
193
257
|
}
|
|
194
258
|
else {
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
}
|
|
198
|
-
else {
|
|
199
|
-
contentPaths = ['./pages/**/*.{js,ts,jsx,tsx}', './components/**/*.{js,ts,jsx,tsx}'];
|
|
200
|
-
}
|
|
259
|
+
// Next.js - src 폴더 사용
|
|
260
|
+
contentPaths = ['./src/**/*.{js,ts,jsx,tsx}'];
|
|
201
261
|
}
|
|
202
262
|
const tailwindConfig = `/** @type {import('tailwindcss').Config} */
|
|
203
263
|
module.exports = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nextjs.d.ts","sourceRoot":"","sources":["../../src/generators/nextjs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"nextjs.d.ts","sourceRoot":"","sources":["../../src/generators/nextjs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAI5C,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAuBf"}
|