@bogomolcompany/bogo 0.1.1 → 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/LICENSE +21 -0
- package/README.md +178 -35
- package/README.ru.md +266 -0
- package/dist/cli.js +148 -15
- package/dist/cli.js.map +1 -1
- package/dist/commands/add-method.d.ts +3 -0
- package/dist/commands/add-method.d.ts.map +1 -0
- package/dist/commands/add-method.js +47 -0
- package/dist/commands/add-method.js.map +1 -0
- package/dist/commands/create-app.d.ts +2 -1
- package/dist/commands/create-app.d.ts.map +1 -1
- package/dist/commands/create-app.js +2 -2
- package/dist/commands/create-app.js.map +1 -1
- package/dist/commands/doctor.d.ts +2 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +53 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/generate-module.d.ts +2 -1
- package/dist/commands/generate-module.d.ts.map +1 -1
- package/dist/commands/generate-module.js +41 -26
- package/dist/commands/generate-module.js.map +1 -1
- package/dist/commands/interactive.d.ts +3 -0
- package/dist/commands/interactive.d.ts.map +1 -0
- package/dist/commands/interactive.js +65 -0
- package/dist/commands/interactive.js.map +1 -0
- package/dist/commands/list-modules.d.ts +2 -0
- package/dist/commands/list-modules.d.ts.map +1 -0
- package/dist/commands/list-modules.js +36 -0
- package/dist/commands/list-modules.js.map +1 -0
- package/dist/commands/remove-module.d.ts +5 -0
- package/dist/commands/remove-module.d.ts.map +1 -0
- package/dist/commands/remove-module.js +99 -0
- package/dist/commands/remove-module.js.map +1 -0
- package/dist/templates/module.d.ts +15 -7
- package/dist/templates/module.d.ts.map +1 -1
- package/dist/templates/module.js +51 -74
- package/dist/templates/module.js.map +1 -1
- package/dist/templates/project.d.ts +2 -1
- package/dist/templates/project.d.ts.map +1 -1
- package/dist/templates/project.js +85 -17
- package/dist/templates/project.js.map +1 -1
- package/dist/templates/render-helpers.d.ts +9 -0
- package/dist/templates/render-helpers.d.ts.map +1 -0
- package/dist/templates/render-helpers.js +78 -0
- package/dist/templates/render-helpers.js.map +1 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +6 -2
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/http.d.ts +5 -0
- package/dist/utils/http.d.ts.map +1 -0
- package/dist/utils/http.js +13 -0
- package/dist/utils/http.js.map +1 -0
- package/dist/utils/index-path.d.ts +7 -0
- package/dist/utils/index-path.d.ts.map +1 -0
- package/dist/utils/index-path.js +25 -0
- package/dist/utils/index-path.js.map +1 -0
- package/dist/utils/io.d.ts +8 -0
- package/dist/utils/io.d.ts.map +1 -0
- package/dist/utils/io.js +31 -0
- package/dist/utils/io.js.map +1 -0
- package/dist/utils/method-spec.d.ts +4 -0
- package/dist/utils/method-spec.d.ts.map +1 -0
- package/dist/utils/method-spec.js +49 -0
- package/dist/utils/method-spec.js.map +1 -0
- package/dist/utils/parts.d.ts +4 -0
- package/dist/utils/parts.d.ts.map +1 -0
- package/dist/utils/parts.js +9 -0
- package/dist/utils/parts.js.map +1 -0
- package/dist/utils/patch-index.d.ts +8 -3
- package/dist/utils/patch-index.d.ts.map +1 -1
- package/dist/utils/patch-index.js +45 -25
- package/dist/utils/patch-index.js.map +1 -1
- package/dist/utils/patch-method.d.ts +14 -0
- package/dist/utils/patch-method.d.ts.map +1 -0
- package/dist/utils/patch-method.js +128 -0
- package/dist/utils/patch-method.js.map +1 -0
- package/dist/utils/template-loader.d.ts +3 -0
- package/dist/utils/template-loader.d.ts.map +1 -0
- package/dist/utils/template-loader.js +17 -0
- package/dist/utils/template-loader.js.map +1 -0
- package/package.json +28 -4
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 bogomolcompany
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,43 +1,76 @@
|
|
|
1
1
|
# @bogomolcompany/bogo
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/@bogomolcompany/bogo)
|
|
4
|
+
[](https://www.npmjs.com/package/@bogomolcompany/bogo)
|
|
5
|
+
[](https://github.com/bogomolcomp/bogo/blob/main/LICENSE)
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
[Русская версия / Russian version](README.ru.md)
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
**`bogo create app`** — Express + TypeScript project in 10 seconds.
|
|
10
|
+
**`bogo g users`** — controller, service, dto, routes, validator in one command.
|
|
11
|
+
**`bogo r users`** — remove a module and clean up the index file.
|
|
12
|
+
|
|
13
|
+
CLI generator for Express API. Works in any repository — configured via `.bogorc.json`.
|
|
14
|
+
|
|
15
|
+

|
|
16
|
+
|
|
17
|
+
## Quick start
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npx @bogomolcompany/bogo create app
|
|
21
|
+
cp .env.example .env
|
|
22
|
+
npm install
|
|
23
|
+
npm run dev
|
|
24
|
+
|
|
25
|
+
npx bogo g users -m getList -m createUser
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Why bogo
|
|
29
|
+
|
|
30
|
+
| | NestJS CLI | express-generator | **bogo** |
|
|
31
|
+
|---|:---:|:---:|:---:|
|
|
32
|
+
| Express without a framework | — | ✓ | ✓ |
|
|
33
|
+
| TypeScript out of the box | ✓ | — | ✓ |
|
|
34
|
+
| DTO + Zod validator | ✓ | — | ✓ |
|
|
35
|
+
| Starter project (server, logger, middleware) | partial | — | ✓ |
|
|
36
|
+
| Minimal dependencies | — | ✓ | ✓ |
|
|
37
|
+
| Generate into an existing project | ✓ | — | ✓ |
|
|
38
|
+
|
|
39
|
+
bogo is for teams using plain Express + TypeScript who are tired of copying the same file structure every time.
|
|
40
|
+
|
|
41
|
+
## Installation
|
|
8
42
|
|
|
9
43
|
```bash
|
|
10
44
|
npm install -g @bogomolcompany/bogo
|
|
11
|
-
#
|
|
45
|
+
# or locally
|
|
12
46
|
npm install --save-dev @bogomolcompany/bogo
|
|
13
47
|
npx bogo --help
|
|
14
48
|
```
|
|
15
49
|
|
|
16
|
-
|
|
50
|
+
From source:
|
|
17
51
|
|
|
18
52
|
```bash
|
|
19
|
-
git clone
|
|
20
|
-
cd bogo
|
|
53
|
+
git clone https://github.com/bogomolcomp/bogo.git
|
|
54
|
+
cd bogo
|
|
21
55
|
npm install
|
|
22
56
|
npm run build
|
|
23
57
|
npm link
|
|
24
58
|
```
|
|
25
59
|
|
|
26
|
-
##
|
|
60
|
+
## Create a new project
|
|
27
61
|
|
|
28
62
|
```bash
|
|
29
|
-
|
|
30
|
-
bogo create app
|
|
63
|
+
bogo create app my-api --with-docker --with-eslint
|
|
31
64
|
```
|
|
32
65
|
|
|
33
|
-
|
|
66
|
+
Or into a subdirectory:
|
|
34
67
|
|
|
35
68
|
```bash
|
|
36
69
|
bogo create app my-api
|
|
37
70
|
cd my-api
|
|
38
71
|
```
|
|
39
72
|
|
|
40
|
-
|
|
73
|
+
Creates:
|
|
41
74
|
|
|
42
75
|
```
|
|
43
76
|
package.json
|
|
@@ -56,7 +89,7 @@ src/
|
|
|
56
89
|
api/
|
|
57
90
|
```
|
|
58
91
|
|
|
59
|
-
|
|
92
|
+
Includes: dotenv, body-parser, logger, formatResponse, IP whitelist (`ALLOWED_IPS`), `/health`, global error handler.
|
|
60
93
|
|
|
61
94
|
```bash
|
|
62
95
|
cp .env.example .env
|
|
@@ -64,31 +97,35 @@ npm install
|
|
|
64
97
|
npm run dev
|
|
65
98
|
```
|
|
66
99
|
|
|
67
|
-
##
|
|
100
|
+
## Init in an existing project
|
|
68
101
|
|
|
69
102
|
```bash
|
|
70
103
|
cd /path/to/your-express-app
|
|
71
104
|
bogo init
|
|
72
105
|
```
|
|
73
106
|
|
|
74
|
-
|
|
107
|
+
Creates `.bogorc.json`:
|
|
75
108
|
|
|
76
109
|
```json
|
|
77
110
|
{
|
|
78
111
|
"apiDir": "src/api",
|
|
79
112
|
"indexFile": "src/index.ts",
|
|
80
|
-
"routePrefix": "/api"
|
|
113
|
+
"routePrefix": "/api",
|
|
114
|
+
"templatesDir": "./bogo-templates"
|
|
81
115
|
}
|
|
82
116
|
```
|
|
83
117
|
|
|
84
|
-
|
|
118
|
+
`templatesDir` is optional. Place `controller.template`, `service.template`, etc. to override built-in templates.
|
|
119
|
+
|
|
120
|
+
## Generate a module
|
|
85
121
|
|
|
86
122
|
```bash
|
|
87
|
-
bogo g
|
|
88
|
-
bogo g
|
|
123
|
+
bogo g analytics -m getStats -m getReport
|
|
124
|
+
bogo g orders -m createOrder:POST:/create -m getOrder:GET:/:id
|
|
125
|
+
bogo g posts -m getList:GET:/list -w auth
|
|
89
126
|
```
|
|
90
127
|
|
|
91
|
-
|
|
128
|
+
Creates:
|
|
92
129
|
|
|
93
130
|
```
|
|
94
131
|
src/api/analytics/
|
|
@@ -99,32 +136,138 @@ src/api/analytics/
|
|
|
99
136
|
analytics.routes.ts
|
|
100
137
|
```
|
|
101
138
|
|
|
102
|
-
|
|
139
|
+
Automatically appends import and `app.use` to `src/index.ts` when the file exists.
|
|
140
|
+
|
|
141
|
+
## Generate a single file
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
bogo g controller users -m getList
|
|
145
|
+
bogo g service users -m getList
|
|
146
|
+
bogo g dto users -m getList -m createUser
|
|
147
|
+
bogo g validator users -m getList
|
|
148
|
+
bogo g routes users -m getList:/list
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Parts: `controller`, `service`, `dto`, `validator`, `routes`.
|
|
152
|
+
|
|
153
|
+
The module folder is created if it does not exist. Generating `routes` updates the index file the same way as a full module.
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
bogo r controller users
|
|
157
|
+
bogo r routes users
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## Add a method to an existing module
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
bogo g method users -m getList
|
|
164
|
+
bogo g method users -m createUser -m updateUser:/:id
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Adds the method to all existing module files: controller, service, dto, validator, routes.
|
|
168
|
+
|
|
169
|
+
Specific parts only:
|
|
103
170
|
|
|
104
|
-
|
|
171
|
+
```bash
|
|
172
|
+
bogo g method users -m getList -p controller
|
|
173
|
+
bogo g method users -m getList -p controller -p service -p dto
|
|
174
|
+
```
|
|
105
175
|
|
|
106
|
-
|
|
107
|
-
|------|----------|
|
|
108
|
-
| `-m, --method` | Метод контроллера. Повторяемый. Формат: `getList` или `getList:/custom-path` |
|
|
109
|
-
| `--skip-index` | Не править index-файл |
|
|
176
|
+
`-m` is required. `-p` is optional — without it, all found files are updated.
|
|
110
177
|
|
|
111
|
-
##
|
|
178
|
+
## Remove a method
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
bogo r method users -m getList
|
|
182
|
+
bogo r method users -m createUser -p controller -p service
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
## List modules
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
bogo list
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
## Doctor
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
bogo doctor
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
Checks `.bogorc.json`, index file, api directory, and required middleware.
|
|
198
|
+
|
|
199
|
+
## Interactive mode
|
|
200
|
+
|
|
201
|
+
```bash
|
|
202
|
+
bogo g --interactive
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
## Remove a module
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
bogo r analytics
|
|
209
|
+
bogo r orders --skip-index
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
Removes the module folder and cleans up import + `app.use` in the index file.
|
|
213
|
+
|
|
214
|
+
## Method spec format
|
|
215
|
+
|
|
216
|
+
| Example | Result |
|
|
217
|
+
|---------|--------|
|
|
218
|
+
| `getList` | POST `/get-list` |
|
|
219
|
+
| `getList:GET` | GET `/get-list` |
|
|
220
|
+
| `getOrder:GET:/:id` | GET `/:id` |
|
|
221
|
+
| `createOrder:POST:/create` | POST `/create` |
|
|
222
|
+
|
|
223
|
+
## Options
|
|
224
|
+
|
|
225
|
+
| Flag | Description |
|
|
226
|
+
|------|-------------|
|
|
227
|
+
| `-m, --method` | Method spec (repeatable). See table above |
|
|
228
|
+
| `-p, --part` | Target a specific part |
|
|
229
|
+
| `-w, --middleware` | Route middleware name (repeatable) |
|
|
230
|
+
| `-i, --interactive` | Interactive generate |
|
|
231
|
+
| `--dry-run` | Preview changes without writing |
|
|
232
|
+
| `--force` | Overwrite existing files |
|
|
233
|
+
| `--skip-index` | Do not patch the index file |
|
|
234
|
+
| `--with-docker` | Add Docker files to `create app` |
|
|
235
|
+
| `--with-eslint` | Add ESLint to `create app` |
|
|
236
|
+
|
|
237
|
+
## Target project requirements
|
|
112
238
|
|
|
113
239
|
- Express + TypeScript
|
|
114
|
-
- Zod
|
|
115
|
-
-
|
|
116
|
-
- `res.success` / `res.error`
|
|
240
|
+
- Zod for validation
|
|
241
|
+
- `validate` middleware at `src/middlewares/validate`
|
|
242
|
+
- `res.success` / `res.error` via response middleware
|
|
117
243
|
|
|
118
|
-
|
|
244
|
+
`bogo create app` scaffolds all of the above.
|
|
245
|
+
|
|
246
|
+
## Development
|
|
119
247
|
|
|
120
248
|
```bash
|
|
121
249
|
npm run build
|
|
122
|
-
npm
|
|
123
|
-
npm run dev --
|
|
250
|
+
npm test
|
|
251
|
+
npm run dev -- create app ./tmp-app --with-eslint
|
|
252
|
+
npm run dev -- g test -m getList:GET
|
|
253
|
+
npm run dev -- g method test -m createUser
|
|
254
|
+
npm run dev -- r method test -m createUser
|
|
255
|
+
npm run dev -- list
|
|
256
|
+
npm run dev -- doctor
|
|
124
257
|
```
|
|
125
258
|
|
|
126
|
-
##
|
|
259
|
+
## Links
|
|
260
|
+
|
|
261
|
+
- npm: https://www.npmjs.com/package/@bogomolcompany/bogo
|
|
262
|
+
- GitHub: https://github.com/bogomolcomp/bogo
|
|
263
|
+
- Issues / feedback: https://github.com/bogomolcomp/bogo/issues
|
|
264
|
+
|
|
265
|
+
## Publish
|
|
127
266
|
|
|
128
267
|
```bash
|
|
129
|
-
npm publish
|
|
268
|
+
npm publish --otp=YOUR_CODE
|
|
130
269
|
```
|
|
270
|
+
|
|
271
|
+
## License
|
|
272
|
+
|
|
273
|
+
MIT
|
package/README.ru.md
ADDED
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
# @bogomolcompany/bogo
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/@bogomolcompany/bogo)
|
|
4
|
+
[](https://www.npmjs.com/package/@bogomolcompany/bogo)
|
|
5
|
+
[](https://github.com/bogomolcomp/bogo/blob/main/LICENSE)
|
|
6
|
+
|
|
7
|
+
[English version](README.md)
|
|
8
|
+
|
|
9
|
+
**`bogo create app`** — Express + TypeScript проект за 10 секунд.
|
|
10
|
+
**`bogo g users`** — controller, service, dto, routes, validator одной командой.
|
|
11
|
+
**`bogo r users`** — удаляет модуль и убирает роут из index.
|
|
12
|
+
|
|
13
|
+
CLI-генератор для Express API. Не привязан к конкретному репозиторию — настраивается через `.bogorc.json`.
|
|
14
|
+
|
|
15
|
+

|
|
16
|
+
|
|
17
|
+
## Быстрый старт
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npx @bogomolcompany/bogo create app
|
|
21
|
+
copy .env.example .env
|
|
22
|
+
npm install
|
|
23
|
+
npm run dev
|
|
24
|
+
|
|
25
|
+
npx bogo g users -m getList -m createUser
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Почему bogo
|
|
29
|
+
|
|
30
|
+
| | NestJS CLI | express-generator | **bogo** |
|
|
31
|
+
|---|:---:|:---:|:---:|
|
|
32
|
+
| Express без своего фреймворка | — | ✓ | ✓ |
|
|
33
|
+
| TypeScript из коробки | ✓ | — | ✓ |
|
|
34
|
+
| DTO + Zod validator | ✓ | — | ✓ |
|
|
35
|
+
| Стартовый проект (server, logger, middleware) | частично | — | ✓ |
|
|
36
|
+
| Минимальные зависимости | — | ✓ | ✓ |
|
|
37
|
+
| Генерация модулей в существующий проект | ✓ | — | ✓ |
|
|
38
|
+
|
|
39
|
+
bogo — для тех, кто пишет на чистом Express + TS и устал каждый раз копировать одну и ту же структуру файлов.
|
|
40
|
+
|
|
41
|
+
## Установка
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
npm install -g @bogomolcompany/bogo
|
|
45
|
+
# или локально
|
|
46
|
+
npm install --save-dev @bogomolcompany/bogo
|
|
47
|
+
npx bogo --help
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Из исходников:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
git clone https://github.com/bogomolcomp/bogo.git
|
|
54
|
+
cd bogo
|
|
55
|
+
npm install
|
|
56
|
+
npm run build
|
|
57
|
+
npm link
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Создание нового проекта
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
bogo create app my-api --with-docker --with-eslint
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Создаёт:
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
package.json
|
|
70
|
+
tsconfig.json
|
|
71
|
+
.env.example
|
|
72
|
+
.bogorc.json
|
|
73
|
+
src/
|
|
74
|
+
index.ts
|
|
75
|
+
types/express.d.ts
|
|
76
|
+
middlewares/
|
|
77
|
+
logger.ts
|
|
78
|
+
formatResponse.ts
|
|
79
|
+
validate.ts
|
|
80
|
+
utils/
|
|
81
|
+
getAllowedIps.ts
|
|
82
|
+
api/
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Включено: dotenv, body-parser, logger, formatResponse, IP whitelist (`ALLOWED_IPS`), `/health`, глобальный error handler.
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
copy .env.example .env
|
|
89
|
+
npm install
|
|
90
|
+
npm run dev
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## Инициализация в существующем проекте
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
cd /path/to/your-express-app
|
|
97
|
+
bogo init
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Создаёт `.bogorc.json`:
|
|
101
|
+
|
|
102
|
+
```json
|
|
103
|
+
{
|
|
104
|
+
"apiDir": "src/api",
|
|
105
|
+
"indexFile": "src/index.ts",
|
|
106
|
+
"routePrefix": "/api",
|
|
107
|
+
"templatesDir": "./bogo-templates"
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
`templatesDir` — опционально. Файлы `controller.template`, `service.template` и т.д. переопределяют встроенные шаблоны.
|
|
112
|
+
|
|
113
|
+
## Генерация модуля
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
bogo g analytics -m getStats -m getReport
|
|
117
|
+
bogo g orders -m createOrder:POST:/create -m getOrder:GET:/:id
|
|
118
|
+
bogo g posts -m getList:GET:/list -w auth
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Создаёт:
|
|
122
|
+
|
|
123
|
+
```
|
|
124
|
+
src/api/analytics/
|
|
125
|
+
analytics.controller.ts
|
|
126
|
+
analytics.service.ts
|
|
127
|
+
analytics.dto.ts
|
|
128
|
+
analytics.validator.ts
|
|
129
|
+
analytics.routes.ts
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Автоматически дописывает import и `app.use` в `src/index.ts`, если файл найден.
|
|
133
|
+
|
|
134
|
+
## Генерация отдельного файла
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
bogo g controller users -m getList
|
|
138
|
+
bogo g service users -m getList
|
|
139
|
+
bogo g dto users -m getList -m createUser
|
|
140
|
+
bogo g validator users -m getList
|
|
141
|
+
bogo g routes users -m getList:/list
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Части: `controller`, `service`, `dto`, `validator`, `routes`.
|
|
145
|
+
|
|
146
|
+
Папка модуля создаётся автоматически, если её ещё нет. При генерации `routes` index обновляется так же, как при полном модуле.
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
bogo r controller users
|
|
150
|
+
bogo r routes users
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## Добавление метода в существующий модуль
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
bogo g method users -m getList
|
|
157
|
+
bogo g method users -m createUser -m updateUser:/:id
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
Добавляет метод во все существующие файлы модуля: controller, service, dto, validator, routes.
|
|
161
|
+
|
|
162
|
+
Только в конкретные части:
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
bogo g method users -m getList -p controller
|
|
166
|
+
bogo g method users -m getList -p controller -p service -p dto
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
`-m` обязателен. `-p` — опционально, без него обновляются все найденные файлы.
|
|
170
|
+
|
|
171
|
+
## Удаление метода
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
bogo r method users -m getList
|
|
175
|
+
bogo r method users -m createUser -p controller -p service
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
## Список модулей
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
bogo list
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
## Doctor
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
bogo doctor
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
Проверяет `.bogorc.json`, index, api-папку и middleware.
|
|
191
|
+
|
|
192
|
+
## Интерактивный режим
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
bogo g --interactive
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
## Удаление модуля
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
bogo r analytics
|
|
202
|
+
bogo r orders --skip-index
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
Удаляет папку модуля и убирает import + `app.use` из index.
|
|
206
|
+
|
|
207
|
+
## Формат `-m`
|
|
208
|
+
|
|
209
|
+
| Пример | Результат |
|
|
210
|
+
|--------|-----------|
|
|
211
|
+
| `getList` | POST `/get-list` |
|
|
212
|
+
| `getList:GET` | GET `/get-list` |
|
|
213
|
+
| `getOrder:GET:/:id` | GET `/:id` |
|
|
214
|
+
| `createOrder:POST:/create` | POST `/create` |
|
|
215
|
+
|
|
216
|
+
## Опции
|
|
217
|
+
|
|
218
|
+
| Флаг | Описание |
|
|
219
|
+
|------|----------|
|
|
220
|
+
| `-m, --method` | Спецификация метода (повторяемый) |
|
|
221
|
+
| `-p, --part` | Только указанная часть |
|
|
222
|
+
| `-w, --middleware` | Middleware для роута (повторяемый) |
|
|
223
|
+
| `-i, --interactive` | Интерактивная генерация |
|
|
224
|
+
| `--dry-run` | Показать изменения без записи |
|
|
225
|
+
| `--force` | Перезаписать существующие файлы |
|
|
226
|
+
| `--skip-index` | Не править index-файл |
|
|
227
|
+
| `--with-docker` | Docker-файлы в `create app` |
|
|
228
|
+
| `--with-eslint` | ESLint в `create app` |
|
|
229
|
+
|
|
230
|
+
## Требования к целевому проекту
|
|
231
|
+
|
|
232
|
+
- Express + TypeScript
|
|
233
|
+
- Zod для валидации
|
|
234
|
+
- Middleware `validate` по пути `src/middlewares/validate`
|
|
235
|
+
- `res.success` / `res.error` через middleware ответа
|
|
236
|
+
|
|
237
|
+
`bogo create app` создаёт всё это автоматически.
|
|
238
|
+
|
|
239
|
+
## Разработка
|
|
240
|
+
|
|
241
|
+
```bash
|
|
242
|
+
npm run build
|
|
243
|
+
npm test
|
|
244
|
+
npm run dev -- create app ./tmp-app --with-eslint
|
|
245
|
+
npm run dev -- g test -m getList:GET
|
|
246
|
+
npm run dev -- g method test -m createUser
|
|
247
|
+
npm run dev -- r method test -m createUser
|
|
248
|
+
npm run dev -- list
|
|
249
|
+
npm run dev -- doctor
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
## Ссылки
|
|
253
|
+
|
|
254
|
+
- npm: https://www.npmjs.com/package/@bogomolcompany/bogo
|
|
255
|
+
- GitHub: https://github.com/bogomolcomp/bogo
|
|
256
|
+
- Issues / feedback: https://github.com/bogomolcomp/bogo/issues
|
|
257
|
+
|
|
258
|
+
## Публикация
|
|
259
|
+
|
|
260
|
+
```bash
|
|
261
|
+
npm publish --otp=YOUR_CODE
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
## Лицензия
|
|
265
|
+
|
|
266
|
+
MIT
|