Using Changesets with pnpm
note
At the time of writing this documentation, the latest pnpm version was v6.14. The latest Changesets version was v2.16.0.
#
SetupTo setup changesets on a pnpm workspace, install changesets as a dev dependency in the root of the workspace:
pnpm add -DW @changesets/cli
Then changesets' init command:
pnpm changeset init
#
Adding new changesetsTo generate a new changeset, run pnpm changeset
in the root of the repository.
The generated markdown files in the .changeset
directory should be committed
to the repository.
#
Releasing changes- Run
pnpm changeset version
. This will bump the versions of the packages previously specified withpnpm changeset
(and any dependents of those) and update the changelog files. - Run
pnpm install
. This will update the lockfile and rebuild packages. - Commit the changes.
- Run
pnpm publish -r
. This command will publish all packages that have bumped versions not yet present in the registry.
#
Using GitHub ActionsTo automate the process, you can use changeset version
with GitHub actions.
#
Bumb up packagesThe action will detect when changeset files arrive in the main
branch, the action will open a new PR listing all the packages with bumped versions. Once merged, the packages will be updated and you can decide whether to publish or not by adding the publish
property.
#
PublishingBy adding publish: pnpm ci:publish
which is a script that executes changeset publish
will publish to the registry once the PR is opened by changeset version
.
name: Changesetson: push: branches: - mainenv: CI: true PNPM_CACHE_FOLDER: .pnpm-storejobs: version: timeout-minutes: 15 runs-on: ubuntu-latest steps: - name: checkout code repository uses: actions/checkout@v2 with: fetch-depth: 0 - name: setup node.js uses: actions/setup-node@v2 with: node-version: 14 - name: install pnpm run: npm i pnpm@latest -g - name: Setup npmrc run: echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > .npmrc - name: setup pnpm config run: pnpm config set store-dir $PNPM_CACHE_FOLDER - name: install dependencies run: pnpm install - name: create and publish versions uses: changesets/action@master with: version: pnpm ci:version commit: "chore: update versions" title: "chore: update versions" publish: pnpm ci:publish env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
More info and documentation regarding this action can be found here.