@pvm/plugin-conventional-changelog
Пресет для библиотеки conventional-changelog, наследует опции из пресета conventional-changelog-angular
Мотивация
Пресет conventional-changelog-angular
игнорирует коммиты всех типов, кроме feat
, fix
и perf
(не считая коммитов
с пометкой breaking change). Из-за этого, при частых релизах с исправлениями документации или тестов, ченджлоги содержат
много пустых описаний релизов. Также, шаблон header.hbs
из conventional-changelog-angular
создает бесполезный заголовок
с версией из корневого package.json монорепозитория, к каждому релизу. Шаблон commit.hbs
не проверяет наличие свойств
hash
и shortHash
у коммитов, и генерирует битые ссылки на коммиты.
Типы релизов и версии
- Тип релиза определяется через коммиты
Тип релиза определяется по коммитам согласно semver соглашениям conventional-commits:
fix type commits should be translated to PATCH releases. feat type commits should be translated to MINOR releases. Commits with BREAKING CHANGE in the commits, regardless of type, should be translated to MAJOR releases.
Также замечу что текст BREAKING CHANGE нужно вставлять именно в теле коммита, что иногда вызывает сложности, поэтому см. ниже упрощенный способ, доступный в pvm.
Мажорные релизы можно делать через восклицательный знак после типа и скопа коммита:
feat(scope)!: этот коммит будет мажорным
илиfeat!: этот коммит будет мажорным
. Мажорное обновление получат все пакеты, которые в этом коммите были затронуты.
- Версии хранятся выделенно, для того чтобы задать начальную версию для пакета используйте поле
initialVersion
в package.json пакета. В дальнейшем версия или версии для пакетов будут хранится в релизных тегах.
Зависимость типа релиза от коммитов
Коммит | Тип релиза | Группа в ченжлоге |
---|---|---|
Ворнинги для targetMethod вызовов | patch | Other |
feat(libs/logger): PFPCORE-1806 Ворнинги для targetMethod вызовов | minor | 🚀 Features |
feat(libs/logger)!: PFPCORE-1806 Ворнинги для targetMethod вызовов | major | 🚀 Features |
fix: Ворнинги для targetMethod вызовов | patch | 🐛 Bug Fixes |
feat: Ворнинги для targetMethod вызовов BREAKING CHANGE описание несовместимого изменения | major | 🚀 Features |
Итого:
- Major релиз задается через восклицательный знак или текста BREAKING CHANGE с дальнейшим описанием в теле коммита.
- Minor задается через тип коммита feat и только через него.
- Все остальные коммиты будут давать тип релиза patch.
- Коммит который не определяет свой тип(группу) или имеет неизвестный тип попадает в группу Other.
- Регулярка для заголовка коммитов
Доступные типы(группы) коммитов
Тип | Вывод в ченжлоге |
---|---|
feat | 🚀 Features |
fix | 🐛 Bug Fixes |
perf | 🏃♀️ Performance Improvements |
revert | ↩️ Reverts |
docs | 📝 Documentation |
style | 💅 Styles |
refactor | 🛠️ Code Refactoring |
test | 🧪 Tests |
build | 🧰 Build System |
ci | ⚙️ Continuous Integration |
<все остальные> | Other |
Enumerations
Type aliases
PluginOpts
Ƭ PluginOpts: Object
Options that allowed to pass to plugin via config file
Example
module.exports = {
plugins: {
options: {
'@pvm/plugin-conventional-changelog': {
ignoreReverted: false
},
},
}
}
Type declaration
Name | Type |
---|---|
config? | any |
ignoreReverted? | boolean |
preset? | string |
whatBump? | (commits : Commit <string | number | symbol >[]) => null | { level : conventionalChangelogReleaseTypes } |
Defined in
packages/pvm-plugin-conventional-changelog/lib/index.ts:55
Variables
conventionalChangelogParserOpts
• conventionalChangelogParserOpts: Object
Type declaration
Name | Type |
---|---|
breakingHeaderPattern | RegExp |
headerPattern | RegExp |
Defined in
packages/pvm-plugin-conventional-changelog/lib/common.ts:5
Functions
default
▸ default(api
, opts?
): Promise
<void
>
Parameters
Name | Type |
---|---|
api | PluginsApi |
opts | PluginOpts |
Returns
Promise
<void
>
Defined in
packages/pvm-plugin-conventional-changelog/lib/index.ts:84
parseCommit
▸ parseCommit(commit
, options?
): Commit
Parameters
Name | Type |
---|---|
commit | string |
options | Options |
Returns
Commit
Defined in
packages/pvm-plugin-conventional-changelog/lib/common.ts:10
releaseMessage
▸ releaseMessage(releaseProps
, opts?
): Promise
<Omit
<Message
, "channel"
>>
Parameters
Name | Type |
---|---|
releaseProps | ReleasedProps |
opts | MessageBuilderOpts |
Returns
Promise
<Omit
<Message
, "channel"
>>
Defined in
packages/pvm-plugin-conventional-changelog/lib/message-builder.ts:245