How I use Changesets for Releases

Jake Ginnivan
2 min readOct 3, 2022

Changesets is a great Open Source tool for releasing packages in a mono repo, for quite a while I have been also using it to control releases to production for my applications as well.

Recently my pull request which enabled Changesets to work with Private packages ("private": { "version": true, "tag": true }set in package.json) was merged and released. This change allows you to create changesets for packages which are not going to be published to NPM.

How it works

When using https://github.com/changesets/action, a Pull Request will automatically be opened.

In the below example, I have changes in my client-http-api project. This caused a bump in my Pulumi infrastructure project as well.

Then my console (web app) had a number of fixes.

Then in my Deploy to Production GitHub action I run my production deployments only if Changesets tells me it’s published.

In the future Changesets may be extended to allow arbitrary publish commands for all projects, but for the moment this works fine. In fact, when using NX’s affected command like I am doing above, it will run deployments for projects which have changes even if there isn’t a changeset.

What’s next?

This is just the first step in making Changesets work for a wider use case than just NPM packages. I’m looking forward to more changes in this area because I really enjoy working with changesets and think it’s a really clean solution to changelogs and versioning.

You can read more at https://github.com/changesets/changesets/issues/849 and https://github.com/changesets/changesets/issues/848

--

--

Jake Ginnivan

Co-Founder featureboard.app | Principal Consultant arkahna.io | Previously Tech Lead Seven West Media WA | International Speaker | OSS | Mentor