@invisible/changelog-update v1.2.2
@invisible/changelog-update
Provides three helper methods to publish the latest additions to your changelog.
assert-changelog-updateAsserts if there is an addition to your changelog in the current, unmerged branch.
push-changelog-updatePushes the changelog additions to Slack (more adapters will be added in the future).
last-changelog-updateLogs the latest changelog additions to stdout. If you are on
master, looks at the diff from two merges ago. If you are not onmaster, looks at the diff betweenmasterandHEAD
Install
- Install the package as devDependency:
yarn add -D @invisible/changelog-update
# or
npm install -D @invisible/changelog-update- If you wish to use
push-changelog-update, set up a Slack Webhook. NOTE: Slack will reject mutliplePOST's to the same webhook that have identical messages, so you might run into this while testing.
Usage
Programmatically
'use strict'
const {
assertChangelogUpdate,
lastChangelogUpdate,
pushChangelogUpdate,
} = require('@invisible/changelog-update')
// changelogFile defaults to CHANGELOG.md if no argument given
// This method will throw if no addition has been made to your changelogFile since
// the last merge commit
assertChangelogUpdate({ changelogFile: 'CHANGELOG.txt' })
const webhookUrl = process.env.CHANGELOG_WEBHOOK_URL
// This method is async so it returns a promise that resolves the Response object from POST'ing to the Slack webhook
pushChangelogUpdate({
changelogFile: 'CHANGELOG.txt', // defaults to CHANGELOG.md
iconEmoji: 'joy', // defaults to :robot_face:
slackbotName: 'Cool Bot Name' , // defaults to Changelog
webhookUrl,
}).then(console.log).catch(console.error)
const notes = lastChangelogUpdate()
console.log(notes) // or do something cool with itHook scripts
assert-changelog-update
Append
assert-changelog-updatetoposttestonscriptssection of yourpackage.json.// It would look something like this: "scripts": { "posttest": "assert-changelog-update" }You can also run it at any time from your CLI.
$ assert-changelog-update # will output the change if found $ assert-changelog-update --quiet # will silently succeed, but output error if not found
push-changelog-update
See
circle.ymlfor an example of how to integrate it. Details below:If using Circle CI, add
push-changelog-updateto thedeploymentsection of your projectcircle.yml.# ... deployment: production: branch: master commands: - push-changelog-updateAdd the
CHANGELOG_WEBHOOK_URLenv variable to your project too. This can be either a Slack or Discord webhook (currently). This package will optionally loaddotenvif it's present, so you may add this to your.envfile as well.You can also run it at any time from your CLI.
$ push-changelog-update $ push-changelog-update --strict # will silently succeed, but, output error if no changelog found without stopping the execution.To ensure that
assert-changelog-updateis run properly, make yourtestsection incircle.ymllook like this:test: override: - yarn testOptional: set some config options in your
package.json. Example:// in package.json "changelogUpdate": { "slackbotName": "Changelog Robot", // defaults to Changelog "iconEmoji": "joy", // defaults to :robot_face: "changelogFile": "CHANGELOG", // defaults to CHANGELOG.md "masterBranch": "production", // defaults to master "remoteMasterBranch": "origin/production" // defaults to origin/master }
TODO
- Unit Tests
- Testing on multiple platforms