Skip to main content

@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 у коммитов, и генерирует битые ссылки на коммиты.

Типы релизов и версии

  1. Тип релиза определяется через коммиты
    1. Тип релиза определяется по коммитам согласно 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.

    2. Мажорные релизы можно делать через восклицательный знак после типа и скопа коммита: feat(scope)!: этот коммит будет мажорным или feat!: этот коммит будет мажорным. Мажорное обновление получат все пакеты, которые в этом коммите были затронуты.

  2. Версии хранятся выделенно, для того чтобы задать начальную версию для пакета используйте поле initialVersion в package.json пакета. В дальнейшем версия или версии для пакетов будут хранится в релизных тегах.

Зависимость типа релиза от коммитов

КоммитТип релизаГруппа в ченжлоге
Ворнинги для targetMethod вызововpatchOther
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

NameType
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

NameType
breakingHeaderPatternRegExp
headerPatternRegExp

Defined in

packages/pvm-plugin-conventional-changelog/lib/common.ts:5

Functions

default

default(api, opts?): Promise<void>

Parameters

NameType
apiPluginsApi
optsPluginOpts

Returns

Promise<void>

Defined in

packages/pvm-plugin-conventional-changelog/lib/index.ts:84


parseCommit

parseCommit(commit, options?): Commit

Parameters

NameType
commitstring
optionsOptions

Returns

Commit

Defined in

packages/pvm-plugin-conventional-changelog/lib/common.ts:10


releaseMessage

releaseMessage(releaseProps, opts?): Promise<Omit<Message, "channel">>

Parameters

NameType
releasePropsReleasedProps
optsMessageBuilderOpts

Returns

Promise<Omit<Message, "channel">>

Defined in

packages/pvm-plugin-conventional-changelog/lib/message-builder.ts:245