@vv0rkz/js-template 1.6.4 → 1.8.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 +224 -150
- package/bin/cli.js +227 -196
- package/bin/init.js +244 -236
- package/package.json +1 -1
- package/templates/.husky/commit-msg +3 -64
- package/templates/.husky/post-commit +3 -25
- package/templates/.husky/pre-push +3 -17
- package/templates/changelog.config.js +16 -9
- package/templates/commitlint.config.js +13 -6
- package/templates/jst.config.js +125 -0
- package/tools-gh/check-demo-for-release.js +36 -30
- package/tools-gh/config.js +126 -0
- package/tools-gh/post-commit-hook.js +40 -0
- package/tools-gh/release.js +120 -102
- package/tools-gh/report-issue.js +32 -0
- package/tools-gh/setup-deps.js +59 -0
- package/tools-gh/setup-labels.js +53 -58
- package/tools-gh/upgrade.js +72 -0
- package/tools-gh/validate-branch.js +33 -0
- package/tools-gh/validate-commit.js +86 -0
package/README.md
CHANGED
|
@@ -1,150 +1,224 @@
|
|
|
1
|
-
# @vv0rkz/js-template
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
##
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
npm
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
-
|
|
34
|
-
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
- [
|
|
117
|
-
|
|
118
|
-
- [
|
|
119
|
-
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
#
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
#
|
|
141
|
-
|
|
142
|
-
#
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
1
|
+
# @vv0rkz/js-template
|
|
2
|
+
|
|
3
|
+
Переиспользуемый шаблон для JS проектов с husky, changelog, GitHub tools и конфигурируемым workflow.
|
|
4
|
+
|
|
5
|
+
## Установка (новый проект)
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install -D @vv0rkz/js-template
|
|
9
|
+
npx jst init
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
`init` создаст все конфиги, хуки, labels и настроит проект.
|
|
13
|
+
|
|
14
|
+
## Обновление (существующий проект)
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
npm update @vv0rkz/js-template
|
|
18
|
+
npx jst upgrade
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
`upgrade` обновит хуки, конфиги commitlint/changelog, и создаст `jst.config.js` если его ещё нет.
|
|
22
|
+
|
|
23
|
+
## Конфигурация
|
|
24
|
+
|
|
25
|
+
Все настройки в одном файле — `jst.config.js` в корне проекта.
|
|
26
|
+
|
|
27
|
+
```js
|
|
28
|
+
export default {
|
|
29
|
+
// Формат веток (шаблоны, не regex)
|
|
30
|
+
branch: {
|
|
31
|
+
main: 'main',
|
|
32
|
+
patterns: [
|
|
33
|
+
'v{version}-{name}', // v2.3.0-dark-theme
|
|
34
|
+
// 'feature/#{issue}-{name}', // feature/#12-dark-theme
|
|
35
|
+
// 'release/v{version}', // release/v2.3.0
|
|
36
|
+
],
|
|
37
|
+
},
|
|
38
|
+
|
|
39
|
+
// GitHub labels
|
|
40
|
+
labels: [
|
|
41
|
+
{ name: 'task', color: '0E8A16', description: 'Новая фича', emoji: '✨' },
|
|
42
|
+
{ name: 'bug', color: 'D73A4A', description: 'Баг', emoji: '🐛' },
|
|
43
|
+
// добавь свои...
|
|
44
|
+
],
|
|
45
|
+
|
|
46
|
+
// Правила коммитов
|
|
47
|
+
commits: {
|
|
48
|
+
types: ['feat', 'fix', 'refactor', 'build', 'chore', 'docs', 'perf'],
|
|
49
|
+
requireIssue: ['feat', 'fix'], // эти типы требуют #номер
|
|
50
|
+
closeKeyword: 'close', // слово для закрытия issue
|
|
51
|
+
},
|
|
52
|
+
|
|
53
|
+
// Релиз
|
|
54
|
+
release: {
|
|
55
|
+
requireDemo: true, // требовать GIF/PNG перед релизом
|
|
56
|
+
demoDir: 'docs', // где искать демо
|
|
57
|
+
demoFormats: ['gif', 'png'],
|
|
58
|
+
},
|
|
59
|
+
|
|
60
|
+
// Автообновление зависимостей
|
|
61
|
+
depUpdater: false, // 'dependabot' | 'renovate' | false
|
|
62
|
+
|
|
63
|
+
// Репозиторий JST для report-issue
|
|
64
|
+
jstRepo: 'vv0rkz/js-template',
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Что автоматическое, а что нужно применить вручную
|
|
69
|
+
|
|
70
|
+
| Что изменил | Когда вступит в силу |
|
|
71
|
+
|---|---|
|
|
72
|
+
| `branch.pattern` | На следующем `git push` |
|
|
73
|
+
| `commits.*` | На следующем `git commit` |
|
|
74
|
+
| `release.*` | На следующем `jst release` |
|
|
75
|
+
| `labels` | После `jst setup-labels` или `jst apply` |
|
|
76
|
+
| `depUpdater` | После `jst setup-deps` или `jst apply` |
|
|
77
|
+
|
|
78
|
+
Короткий путь — `jst apply` применит labels + deps за раз.
|
|
79
|
+
|
|
80
|
+
## Команды
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
npm run _ <команда> # короткая форма
|
|
84
|
+
npm run jst <команда> # полная форма
|
|
85
|
+
npx jst <команда> # напрямую
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Проект
|
|
89
|
+
|
|
90
|
+
| Команда | Описание |
|
|
91
|
+
|---|---|
|
|
92
|
+
| `init` | Инициализация нового проекта |
|
|
93
|
+
| `upgrade` | Обновить конфиги после `npm update` |
|
|
94
|
+
| `apply` | Применить изменения из `jst.config.js` |
|
|
95
|
+
| `setup-labels` | Настроить GitHub labels |
|
|
96
|
+
| `setup-deps` | Настроить dependabot/renovate |
|
|
97
|
+
|
|
98
|
+
### Разработка
|
|
99
|
+
|
|
100
|
+
| Команда | Описание |
|
|
101
|
+
|---|---|
|
|
102
|
+
| `release` | Полный релиз (changelog + README) |
|
|
103
|
+
| `push-release` | Создать PR и смерджить в main |
|
|
104
|
+
| `changelog` | Создать changelog |
|
|
105
|
+
| `update-readme` | Обновить README с версией |
|
|
106
|
+
|
|
107
|
+
### Issues (текущий проект)
|
|
108
|
+
|
|
109
|
+
| Команда | Описание |
|
|
110
|
+
|---|---|
|
|
111
|
+
| `tasks` | Список задач |
|
|
112
|
+
| `create-task [название]` | Создать задачу |
|
|
113
|
+
| `bugs` | Список багов |
|
|
114
|
+
| `create-bug [название]` | Создать баг |
|
|
115
|
+
| `refactors` | Список рефакторингов |
|
|
116
|
+
| `create-refactor [название]` | Создать рефакторинг |
|
|
117
|
+
| `perfs` | Список оптимизаций |
|
|
118
|
+
| `create-perf [название]` | Создать оптимизацию |
|
|
119
|
+
| `all-issues` | Все открытые issues |
|
|
120
|
+
| `report-issue [описание]` | Сообщить о проблеме в JST |
|
|
121
|
+
|
|
122
|
+
### Pull Requests
|
|
123
|
+
|
|
124
|
+
| Команда | Описание |
|
|
125
|
+
|---|---|
|
|
126
|
+
| `pr-list` | Показать все PR |
|
|
127
|
+
| `pr-view <n>` | Посмотреть PR в терминале |
|
|
128
|
+
| `pr-view-web <n>` | Открыть PR в браузере |
|
|
129
|
+
| `pr-merge <n>` | Смерджить PR |
|
|
130
|
+
| `pr-close <n>` | Закрыть PR без merge |
|
|
131
|
+
|
|
132
|
+
## Формат коммитов
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
feat: #9 добавить тёмную тему # фича, ссылка на issue
|
|
136
|
+
feat(Date): #9 добавить форматирование # фича со scope
|
|
137
|
+
feat: close #9 добавить тёмную тему # фича + закрыть issue
|
|
138
|
+
feat(parser): close #9 финализировать # scope + закрыть issue
|
|
139
|
+
fix: #10 исправить валидацию # фикс, ссылка на issue
|
|
140
|
+
fix(auth): close #10 исправить валидацию # фикс + scope + закрыть
|
|
141
|
+
refactor: оптимизировать алгоритм # без issue
|
|
142
|
+
refactor(utils): оптимизировать хелперы # без issue, со scope
|
|
143
|
+
docs: обновить README # без issue
|
|
144
|
+
chore(release): v1.2.0 # авто-релиз
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### Когда issue закрывается
|
|
148
|
+
|
|
149
|
+
По умолчанию `feat: #9 ...` и `fix: #9 ...` **не закрывают** issue — только ссылаются. Чтобы закрыть, добавь ключевое слово `close` перед номером:
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
# Несколько коммитов по одной задаче
|
|
153
|
+
git commit -m "feat: #9 добавить компонент кнопки"
|
|
154
|
+
git commit -m "feat: #9 добавить стили кнопки"
|
|
155
|
+
git commit -m "feat: close #9 финализировать кнопку" # ← закроет issue
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Ключевое слово настраивается через `commits.closeKeyword` в конфиге.
|
|
159
|
+
|
|
160
|
+
## Формат веток
|
|
161
|
+
|
|
162
|
+
Ветки задаются шаблонами, без regex. Доступные плейсхолдеры:
|
|
163
|
+
|
|
164
|
+
| Плейсхолдер | Что матчит | Пример |
|
|
165
|
+
|---|---|---|
|
|
166
|
+
| `{version}` | Семвер X.Y.Z | `2.3.0` |
|
|
167
|
+
| `{issue}` | Номер issue | `12` |
|
|
168
|
+
| `{name}` | Описание (буквы, цифры, `-`, `_`) | `dark-theme` |
|
|
169
|
+
| `*` | Что угодно | `anything/here` |
|
|
170
|
+
|
|
171
|
+
```js
|
|
172
|
+
// Классический стиль
|
|
173
|
+
patterns: ['v{version}-{name}']
|
|
174
|
+
// ✅ v2.3.0-normalize-operators
|
|
175
|
+
|
|
176
|
+
// GitHub Flow стиль
|
|
177
|
+
patterns: ['feature/#{issue}-{name}', 'fix/#{issue}-{name}', 'release/v{version}']
|
|
178
|
+
// ✅ feature/#12-dark-theme
|
|
179
|
+
// ✅ fix/#7-validation-bug
|
|
180
|
+
// ✅ release/v2.3.0
|
|
181
|
+
|
|
182
|
+
// Без ограничений
|
|
183
|
+
patterns: ['*']
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
## Типичный workflow
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
# 1. Создать задачу
|
|
190
|
+
npm run _ create-task "Добавить тёмную тему" # → issue #12
|
|
191
|
+
|
|
192
|
+
# 2. Создать ветку
|
|
193
|
+
git checkout -b v1.3.0-dark-theme
|
|
194
|
+
|
|
195
|
+
# 3. Работать и коммитить
|
|
196
|
+
git commit -m "feat: #12 добавить переключатель темы"
|
|
197
|
+
git commit -m "feat: #12 добавить CSS переменные"
|
|
198
|
+
git commit -m "feat: close #12 финальные стили" # закрыть issue
|
|
199
|
+
|
|
200
|
+
# 4. Релиз
|
|
201
|
+
npm run _ release
|
|
202
|
+
npm run _ push-release
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
## Что устанавливается при init
|
|
206
|
+
|
|
207
|
+
- `jst.config.js` — единый конфиг проекта
|
|
208
|
+
- `.husky/` — хуки (commit-msg, pre-push, post-commit)
|
|
209
|
+
- `commitlint.config.js` — проверка коммитов (читает из jst.config.js)
|
|
210
|
+
- `changelog.config.js` — генерация changelog (читает из jst.config.js)
|
|
211
|
+
- `.gitignore`
|
|
212
|
+
- GitHub labels (если установлен `gh`)
|
|
213
|
+
- dependabot/renovate (если включён в конфиге)
|
|
214
|
+
|
|
215
|
+
## Технологии
|
|
216
|
+
|
|
217
|
+
- [Husky](https://typicode.github.io/husky/) — Git hooks
|
|
218
|
+
- [Commitlint](https://commitlint.js.org/) — Проверка коммитов
|
|
219
|
+
- [Changelogen](https://github.com/unjs/changelogen) — Генерация changelog
|
|
220
|
+
- [GitHub CLI](https://cli.github.com/) — Управление issues
|
|
221
|
+
|
|
222
|
+
## Лицензия
|
|
223
|
+
|
|
224
|
+
MIT © [vv0rkz](https://github.com/vv0rkz)
|