| # Creating a release |
| |
| Only collaborators in npm for **node-addon-api** can create releases. |
| If you want to be able to do releases ask one of the existing |
| collaborators to add you. If necessary you can ask the build |
| Working Group who manages the Node.js npm user to add you if |
| there are no other active collaborators. |
| |
| Generally, the release is handled by the |
| [release-please](https://github.com/nodejs/node-addon-api/blob/main/.github/workflows/release-please.yml) |
| GitHub action. It will bump the version in `package.json` and publish |
| node-addon-api to npm. |
| |
| In cases that the release-please action is not working, please follow the steps |
| below to publish node-addon-api manually. |
| |
| ## Publish new release manually |
| |
| ### Prerequisites |
| |
| Before to start creating a new release check if you have installed the following |
| tools: |
| |
| * [Changelog maker](https://www.npmjs.com/package/changelog-maker) |
| |
| If not please follow the instruction reported in the tool's documentation to |
| install it. |
| |
| ### Steps |
| |
| These are the steps to follow to create a new release: |
| |
| * Open an issue in the **node-addon-api** repo documenting the intent to create a |
| new release. Give people some time to comment or suggest PRs that should land first. |
| |
| * Validate all tests pass by running `npm test` on the `main` branch. |
| |
| * Update the version in **package.json** appropriately. |
| |
| * Update the [README.md](https://github.com/nodejs/node-addon-api/blob/main/README.md) |
| to show the new version as the latest. |
| |
| * Generate the changelog for the new version using **changelog maker** tool. From |
| the route folder of the repo launch the following command: |
| |
| ```bash |
| > changelog-maker --md --group --filter-release |
| ``` |
| * Use the output generated by **changelog maker** to update the [CHANGELOG.md](https://github.com/nodejs/node-addon-api/blob/main/CHANGELOG.md) |
| following the style used in publishing the previous release. |
| |
| * Add any new contributors to the "contributors" section in the package.json |
| |
| * Commit with a message containing _only_ an x.y.z semver designator. "x.y.z" (so that the commit can be filtered by changelog-maker) |
| |
| * Create a release proposal pull request. |
| |
| * Use **[CI](https://ci.nodejs.org/view/x%20-%20Abi%20stable%20module%20API/job/node-test-node-addon-api-new/)** |
| to validate tests pass (note there are still some issues on SmartOS and |
| Windows in the testing). |
| |
| * Do a clean checkout of node-addon-api. |
| |
| * Login and then run `npm publish`. |
| |
| * Create a release in Github (look at existing releases for an example). |
| |
| * Validate that you can run `npm install node-addon-api` successfully |
| and that the correct version is installed. |
| |
| * Comment on the issue opened in the first step that the release has been created |
| and close the issue. |
| |
| * Tweet that the release has been created. |
| |
| ## Optional Steps |
| |
| Depending on circumstances for the release, additional steps may be required to |
| support the release process. |
| |
| ### Major Releases to Drop Support Node.js Versions |
| |
| `node-addon-api` provides support for Node.js versions following the same |
| [release schedule](https://nodejs.dev/en/about/releases/): once a Node.js |
| version leaves maintenance mode, the next major version of `node-addon-api` |
| published will drop support for that version. These are the steps to follow to |
| drop support for a Node.js version: |
| |
| * Update minimum version supported in documentation ([README.md](../README.md)) |
| |
| * Remove from GitHub actions ([ci.yml](../.github/workflows/ci.yml) and |
| [ci-win.yml](../.github/workflows/ci-win.yml)) |
| |
| * Remove from Jenkins CI ([node-test-node-addon-api-LTS versions |
| [Jenkins]](https://ci.nodejs.org/view/x%20-%20Abi%20stable%20module%20API/job/node-test-node-addon-api-LTS%20versions/)) |