Automating npm Package Releases

How to setup semantic-release with GitHub Actions

Mark Skelton
2 min readMay 25, 2020
Photo by Paul Esch-Laurent on Unsplash

This article was originally posted on my blog. Check it out as well as my other articles!

semantic-release is a tool which fully automates the process of releasing your code to the world. It determines the next version based on the commit messages (e.g. fix, feat) giving you full control over the next version but still automating the release process. This short article shows how to setup semantic-release for an npm package using GitHub Actions.

First, create a GitHub Action which calls npx semantic-release (or yarn semantic-release if you use Yarn). This should be run after any other pre-release steps such as npm run build and npm test.

name: Release
on: [push]
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- run: npm ci
- run: npx semantic-release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}

Next, update your package changelog to indicate that change notes can be viewed on the releases tab.

# ChangelogThe changelog is automatically updated using [semantic-release](https://github.com/semantic-release/semantic-release). You can see it on the [releases page](../../releases).

Finally, update the version in your package.json to something that indicates your package is versioned using semantic release.

"version": "0.0.0-semantically-released"

That’s it! Your package is now being automatically released via semantic-release!

For more details, checkout the semantic-release docs.

--

--

Mark Skelton

Staff Software Engineer @Widen using TypeScript, React, and Playwright.