5. release-it#

Volto uses the library release-it in order to automate the release process.

You can also integrate it with your add-on or project, since it's quite handy and saves you quite a lot of time.

Note

If you are familiarized with zest.releaser in the Python packaging world, this library aims to do the same.

5.1. Basic configuration#

In your package.json:

  "release-it": {
    "hooks": {
      "before:bump": [
        "yarn i18n",
        "git add locales"
      ],
      "after:bump": "node changelogupdater.js bump ${version}",
      "after:release": "node changelogupdater.js back ${version} && git commit -am 'Back to development' && git push"
    },
    "git": {
      "changelog": "node changelogupdater.js excerpt",
      "requireUpstream": false,
      "requireCleanWorkingDir": false
    },
    "github": {
      "release": true,
      "releaseName": "${version}",
      "releaseNotes": "node changelogupdater.js excerpt"
    }
  },

Note

You can refer to the release-it documentation for further information: https://www.npmjs.com/package/release-it

release-it defines a release workflow, were you can hook and issue your own commands. It also has default named hooks that do common tasks like creating a Release on GitHub ('github'), or repository related tasks ('git') like update the changelog. Hook into a state in the lifecycle is easy, you can issue several commands that will be added to the default defined ones (release-it/release-it). You can modify the default ones to adjust to your requirements. eg. in the example, we hook into the before:bump, after:bump and after:release to issue custom commands accordingly to each state of the release.

We also use the changelogupdater command from @plone/scripts. See @plone/scripts for more information.