gitverse-release 3.2.0 → 3.3.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/README.md +166 -3
- package/dist/cli.js +726 -318
- package/dist/cli.js.map +31 -29
- package/dist/gitverse.d.ts +7 -2
- package/dist/index.d.ts +5 -0
- package/dist/index.js +538 -317
- package/dist/index.js.map +29 -28
- package/dist/types.d.ts +151 -0
- package/dist/utils/changelog.d.ts +2 -2
- package/dist/utils/commitlint-generator.d.ts +5 -0
- package/dist/utils/git.d.ts +22 -0
- package/dist/utils/retry.d.ts +35 -0
- package/package.json +4 -7
- package/schema.json +289 -0
package/README.md
CHANGED
|
@@ -15,6 +15,8 @@
|
|
|
15
15
|
- 🏷️ **Автоматические git теги и коммиты**
|
|
16
16
|
- 🔍 **Режим dry-run** для безопасного тестирования
|
|
17
17
|
- ⚙️ **Гибкая конфигурация** через `.gitversereleaserc.json`
|
|
18
|
+
- 🔧 **Автогенерация commitlint конфига** из release конфигурации
|
|
19
|
+
- 🪝 **Хуки beforeCommit** для автоматической подготовки файлов перед релизом
|
|
18
20
|
|
|
19
21
|
## Установка
|
|
20
22
|
|
|
@@ -224,6 +226,88 @@ git commit -m "fix(ui): исправлена ошибка компонента"
|
|
|
224
226
|
git commit -m "chore: обновлены зависимости"
|
|
225
227
|
```
|
|
226
228
|
|
|
229
|
+
## Генерация Commitlint конфига
|
|
230
|
+
|
|
231
|
+
Инструмент может автоматически генерировать `commitlint.config.ts` из вашей release конфигурации, обеспечивая синхронизацию между форматом коммитов и генерацией релизов.
|
|
232
|
+
|
|
233
|
+
### Быстрый старт
|
|
234
|
+
|
|
235
|
+
```bash
|
|
236
|
+
# Генерировать commitlint конфиг
|
|
237
|
+
npx gitverse-release generate-commitlint
|
|
238
|
+
|
|
239
|
+
# Preview без записи файла
|
|
240
|
+
npx gitverse-release generate-commitlint --dry-run
|
|
241
|
+
|
|
242
|
+
# С кастомными параметрами
|
|
243
|
+
npx gitverse-release generate-commitlint --format js --output .commitlintrc.js
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
### Что генерируется?
|
|
247
|
+
|
|
248
|
+
Команда автоматически извлекает:
|
|
249
|
+
- **Типы коммитов** из `changelog.types` (feat, fix, docs, etc.)
|
|
250
|
+
- **Scopes** из названий пакетов в монорепо + дополнительные scopes
|
|
251
|
+
- **Правила валидации** (max length, case, required fields)
|
|
252
|
+
|
|
253
|
+
### Конфигурация defaults
|
|
254
|
+
|
|
255
|
+
Добавьте секцию `commitlint` в `.gitversereleaserc.json`:
|
|
256
|
+
|
|
257
|
+
```json
|
|
258
|
+
{
|
|
259
|
+
"commitlint": {
|
|
260
|
+
"output": "commitlint.config.ts",
|
|
261
|
+
"format": "ts",
|
|
262
|
+
"scopes": ["deps", "ci", "docs"],
|
|
263
|
+
"scopeRequired": false,
|
|
264
|
+
"headerMaxLength": 100,
|
|
265
|
+
"comments": true
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
Теперь можно просто запускать `npx gitverse-release generate-commitlint` без параметров!
|
|
271
|
+
|
|
272
|
+
### CLI опции
|
|
273
|
+
|
|
274
|
+
```bash
|
|
275
|
+
--output <path> Путь для вывода (default: из конфига)
|
|
276
|
+
--format <ts|js|json> Формат файла (default: из конфига)
|
|
277
|
+
--scopes <list> Дополнительные scopes через запятую
|
|
278
|
+
--scope-required Требовать обязательный scope
|
|
279
|
+
--header-max-length <n> Максимальная длина header
|
|
280
|
+
--no-comments Отключить комментарии в файле
|
|
281
|
+
--dry-run Preview без записи
|
|
282
|
+
--verbose Подробный вывод
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
### Примеры использования
|
|
286
|
+
|
|
287
|
+
```bash
|
|
288
|
+
# Использовать настройки из конфига
|
|
289
|
+
npx gitverse-release generate-commitlint
|
|
290
|
+
|
|
291
|
+
# Preview сгенерированного файла
|
|
292
|
+
npx gitverse-release generate-commitlint --dry-run --verbose
|
|
293
|
+
|
|
294
|
+
# Генерировать JS вместо TS
|
|
295
|
+
npx gitverse-release generate-commitlint --format js --output .commitlintrc.js
|
|
296
|
+
|
|
297
|
+
# Добавить дополнительные scopes
|
|
298
|
+
npx gitverse-release generate-commitlint --scopes api,cli,tests
|
|
299
|
+
|
|
300
|
+
# Требовать обязательный scope
|
|
301
|
+
npx gitverse-release generate-commitlint --scope-required
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
### Преимущества
|
|
305
|
+
|
|
306
|
+
✅ **Единый источник истины** - типы и scopes определяются в одном месте
|
|
307
|
+
✅ **Автоматическая синхронизация** - изменения в release конфиге автоматически отражаются в commitlint
|
|
308
|
+
✅ **Меньше ошибок** - нет риска рассинхронизации конфигов
|
|
309
|
+
✅ **CI-friendly** - легко интегрируется в pipelines для проверки актуальности конфига
|
|
310
|
+
|
|
227
311
|
## Конфигурация
|
|
228
312
|
|
|
229
313
|
### Полный пример
|
|
@@ -231,6 +315,7 @@ git commit -m "chore: обновлены зависимости"
|
|
|
231
315
|
```json
|
|
232
316
|
{
|
|
233
317
|
"git": {
|
|
318
|
+
"beforeCommit": "bun run lint:fix",
|
|
234
319
|
"commitMessage": "chore(release): v{version} [skip ci]",
|
|
235
320
|
"tagMessage": "Release {version}",
|
|
236
321
|
"push": true,
|
|
@@ -265,10 +350,54 @@ git commit -m "chore: обновлены зависимости"
|
|
|
265
350
|
"monorepo": {
|
|
266
351
|
"enabled": false,
|
|
267
352
|
"packages": []
|
|
353
|
+
},
|
|
354
|
+
"commitlint": {
|
|
355
|
+
"output": "commitlint.config.ts",
|
|
356
|
+
"format": "ts",
|
|
357
|
+
"scopes": ["deps", "ci", "docs"],
|
|
358
|
+
"scopeRequired": false,
|
|
359
|
+
"headerMaxLength": 100,
|
|
360
|
+
"comments": true
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
### beforeCommit хук
|
|
366
|
+
|
|
367
|
+
Хук `beforeCommit` запускается **перед проверкой чистоты working tree** и позволяет автоматически подготовить файлы перед созданием релиза:
|
|
368
|
+
|
|
369
|
+
```json
|
|
370
|
+
{
|
|
371
|
+
"git": {
|
|
372
|
+
"beforeCommit": "bun run lint:fix"
|
|
268
373
|
}
|
|
269
374
|
}
|
|
270
375
|
```
|
|
271
376
|
|
|
377
|
+
**Как это работает:**
|
|
378
|
+
1. Запускается команда `beforeCommit` (например, линтер)
|
|
379
|
+
2. Если команда выполнилась успешно (exit code 0):
|
|
380
|
+
- Все измененные файлы добавляются в staging area (`git add -A`)
|
|
381
|
+
- Эти изменения войдут в коммит релиза вместе с version/changelog
|
|
382
|
+
3. Проверяется чистота working tree (только unstaged изменения)
|
|
383
|
+
|
|
384
|
+
**Примеры использования:**
|
|
385
|
+
```json
|
|
386
|
+
// Форматирование кода
|
|
387
|
+
"beforeCommit": "bun run format"
|
|
388
|
+
|
|
389
|
+
// Линтинг и автофикс
|
|
390
|
+
"beforeCommit": "bun run lint:fix"
|
|
391
|
+
|
|
392
|
+
// Обновление lock файлов
|
|
393
|
+
"beforeCommit": "bun install --frozen-lockfile=false"
|
|
394
|
+
|
|
395
|
+
// Несколько команд
|
|
396
|
+
"beforeCommit": "bun run lint:fix && bun run format"
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
**Важно:** Если хук завершается с ошибкой (exit code ≠ 0), изменения НЕ добавляются в staging area и релиз продолжается как обычно.
|
|
400
|
+
|
|
272
401
|
### Переменные окружения
|
|
273
402
|
|
|
274
403
|
```bash
|
|
@@ -332,19 +461,53 @@ env:
|
|
|
332
461
|
|
|
333
462
|
## CLI опции
|
|
334
463
|
|
|
335
|
-
|
|
464
|
+
### Основные команды
|
|
465
|
+
|
|
466
|
+
```bash
|
|
467
|
+
# Создать релиз
|
|
336
468
|
npx gitverse-release [package] [options]
|
|
337
469
|
|
|
470
|
+
# Генерировать commitlint конфиг
|
|
471
|
+
npx gitverse-release generate-commitlint [options]
|
|
472
|
+
|
|
473
|
+
# Создать только GitVerse Release для существующего тега (recovery mode)
|
|
474
|
+
npx gitverse-release create-only --tag <tag> [--package <name>]
|
|
475
|
+
```
|
|
476
|
+
|
|
477
|
+
### Опции для релиза
|
|
478
|
+
|
|
479
|
+
```
|
|
338
480
|
Аргументы:
|
|
339
481
|
package Имя пакета для релиза (для монорепозиториев)
|
|
340
482
|
|
|
341
483
|
Опции:
|
|
342
484
|
--dry-run Запуск без внесения изменений
|
|
485
|
+
--config <path> Путь к конфиг файлу (default: .gitversereleaserc.json)
|
|
486
|
+
--package <name> Имя пакета для релиза (для монорепо)
|
|
343
487
|
--version <version> Указать конкретную версию
|
|
344
|
-
--
|
|
488
|
+
--prerelease [tag] Создать prerelease версию (beta, alpha, rc)
|
|
489
|
+
--no-commit Не создавать git коммит
|
|
490
|
+
--no-tag Не создавать git тег
|
|
491
|
+
--no-push Не пушить в remote
|
|
492
|
+
--no-release Не создавать GitVerse Release
|
|
493
|
+
--verbose Подробный вывод
|
|
345
494
|
--help Показать справку
|
|
346
495
|
```
|
|
347
496
|
|
|
497
|
+
### Опции для generate-commitlint
|
|
498
|
+
|
|
499
|
+
```
|
|
500
|
+
Опции:
|
|
501
|
+
--output <path> Путь для вывода (default: commitlint.config.ts)
|
|
502
|
+
--format <ts|js|json> Формат файла (default: ts)
|
|
503
|
+
--scopes <scopes> Дополнительные scopes (comma-separated)
|
|
504
|
+
--scope-required Требовать обязательный scope
|
|
505
|
+
--header-max-length <n> Максимальная длина header (default: 100)
|
|
506
|
+
--no-comments Отключить комментарии в файле
|
|
507
|
+
--dry-run Preview без записи
|
|
508
|
+
--verbose Подробный вывод
|
|
509
|
+
```
|
|
510
|
+
|
|
348
511
|
## CI/CD интеграция
|
|
349
512
|
|
|
350
513
|
### GitVerse Actions
|
|
@@ -434,7 +597,7 @@ MIT © [RainyPixel](https://gitverse.ru/RainyPixel)
|
|
|
434
597
|
|
|
435
598
|
## Сообщить об ошибке
|
|
436
599
|
|
|
437
|
-
Создайте issue на [GitVerse](https://gitverse.ru/RainyPixel/gitverse-sdk/
|
|
600
|
+
Создайте issue на [GitVerse](https://gitverse.ru/RainyPixel/gitverse-sdk/tasktracker)
|
|
438
601
|
|
|
439
602
|
---
|
|
440
603
|
|