conventional-changelog-unconventional
This is a fork of and drop-in replacement for
conventional-changelog-conventionalcommits.
Along with various bug fixes (regex string mangling, sorting problems, etc),
what follows are the major differences:
Updated to use modern JS/TypeScript
This rewrite uses a modern Babel-based build chain, is written in TypeScript, is
fully typed, and supports modern debugging practices.
This will be true in the next version 😅
A few style tweaks
Specifically:
- The scope and the first line of the subject of breaking changes are made bold
- Scope-less subjects are made sentence case
- Reverts are italicized; malformed reverts are normalized
- Better grammar from
conventional-recommended-bump
Since this configuration is used primarily in
semantic-release
-based
flows, there is no reason to store release information in commit footers.
No longer returns Promises
Requiring and calling
conventional-changelog-conventionalcommits
emits a Promise, making the result impossible to reference in synchronized code
(babel plugins, semantic-release config files, conventional-X-cli config). This
fork avoids the pain, allowing one shared configuration to be consumed by
conventional-changelog-core
,
conventional-changelog-cli
via command line, semantic-release
via release
configuration, projector
and
projector-pipeline
at
various points in the CI/CD pipeline, and other sync and async tooling.
This also means configOverrides
cannot be a Promise.
Easier to customize
With
conventional-changelog-conventionalcommits,
drilling down into the resultant
config object
and altering something like
writerOpts.transform
is difficult, especially if you only want to tweak rather than completely
overwrite it. This fork makes deep customizations, including extending rather
than overwriting the default functionality, easier. Just pass your
config
overrides,
which will be used to tweak the default configuration (see
the exported function itself
for details).
Simpler source organization
Simplified the source code by concentrating default configuration to a
single file with the all the configuration knobs easily
accessible among the topmatter.
For usage examples and related documentation, see the original
conventional-changelog-conventionalcommits
package.