A basic changelog manager made to avoid conflicts at git merge.
Add the package to your project as a dev dependency:
npm install -D changelogify
changelogify [options]
Options:
    init          Copy default configuration file into package to be overwriten.
                        If the user configuration file is not found, default one will be used.
    add           Write/overwrite the current git branch changelog file 
                        into ./changelogs/unreleased/
    release       Concat changelogs file from ./changelogs/unreleased/,
                        add them into ./CHANGELOG.md and delete them.
If no option is specified, add is used. This can be changed or removed to display the helper above, see defaultCommand in configuration file.
These three changelogs
{
  "message": "feature 1",
  "type": "Added",
  "branch": "7"
}{
  "message": "feature 2",
  "type": "Added"
}{
  "message": "lint",
  "type": "Meta",
  "branch": "8"
}will be concatenated into CHANGELOG.md
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [v1.0.0] - 2020-1-29
### Added
- feature 1 - [7](www.example.com/issues/7)
- feature 2
### Meta
- lint - [8](www.example.com/issues/8)
With init, the default configuration is copied in ./changelogs/config.json, where you can overwrite it.
{
    // changelog types
    "types": [
        "Added",
        "Changed",
        "Deprecated",
        "Removed",
        "Fixed",
        "Security",
        "Meta"
    ],
    // link to git issue. `NUMBER` is current branch number by default
    // if empty, no link will be provided
    "gitIssueTemplate": "[NUMBER](www.example.com/issues/NUMBER)",
    // automatic commit for `add` command
    "autoCommitAdd": true,
    // associated commit message. `NUMBER` is current branch number by default
    "changelogMessageAdd": "Add changelog entry for #NUMBER",
    // automatic commit for `release` command
    "autoCommitRelease": true,
    // associated commit message.
    "changelogMessageRelease": "changelog",
    // default command if none is passed ("", "add", "init" or "release")
    "defaultCommand": "add"
}After updating the library, you should execute init. New settings will be appended, keeping the old ones.
It also creates the file ./EMPTY_CHANGELOG.md which you can custom. It will be copied to ./CHANGELOG.md the first time you use the release command.
The add command ask you to write a changelog entry, choose an entry type and a branch number (optional).
It will write it in a unique file in ./changelogs/unreleased/.
$ npx changelogify add
> [email protected] changelog /home/robin/Documents/wanadev/test_changelog
> node node_modules/changelogify/index.js "add"
? What's your changelog entry? Feature 1
? Entry type? Added
? What's your git branch number? (Optional) 12
{
    "message": "Feature 1",
    "type": "Added",
    "branch": "12"
}
written in /changelogs/unreleased/12-test-changelogify_1.json
Changelog committed, use `git push` to write it remotelyYou can also pass parameters to it.
$ npx changelogify add --message "Feature 1" --type Added --branch 12
# or
$ npx changelogify add -m "Feature 1" -t Added -b 12And run it on silent mode.
$ npx changelogify add -m "Feature 1" -t Added -b 12 -s
> [email protected] changelog /home/robin/Documents/wanadev/test_changelog
> node node_modules/changelogify/index.js "add" "-m" "Feature 1" "-t" "Added" "-b" "12" "-s"The release command merge every changelog files from ./changelogs/unreleased/ and add the new content on ./CHANGELOG.md.
If ./CHANGELOG.md doesn't exist, it is created from ./EMPTY_CHANGELOG.md. Check init if you want to use a custom changelog format.
See CHANGELOG.md