メインコンテンツまでスキップ
Version: 8.x

pnpm と Changesets を組み合わせて使用する

メモ

このドキュメントを書いている時点での、最新の pnpm のバージョンは v6.14 です。 最新の Changesets のバージョンは v2.16.0 です。

セットアップ

changesets を pnpm ワークスペースでセットアップするには、changesets を devDependency としてワークスペースのルートにインストールします。

pnpm add -Dw @changesets/cli

changesets の初期化コマンド:

pnpm changeset init

新しいチェンジセットの追加

新しいチェンジセットを生成するには、 pnpm changeset をリポジトリのルートで実行します。 .changeset ディレクトリに生成されたマークダウンファイルはリポジトリにコミットします。

変更のリリース

  1. pnpm changeset version を実行します。 このコマンド先ほど pnpm changeset によって指定したパッケージ (とそれらのすべての依存) のバージョン更新を適用し、チェンジログファイルを更新します。
  2. pnpm install を実行します。 このコマンドによりロックファイルの更新とパッケージのビルドを行います。
  3. 変更をコミットします。
  4. pnpm publish -r を実行します。 このコマンドは、レジストリにまだ存在しない BUMP されたバージョンを持つすべてのパッケージを公開します。

GitHub Actionsの使用

このプロセスを自動化するために、GitHub のアクションで changeset version を使用することができます。

パッケージバージョンの更新

このアクションは、チェンジセットファイルが main ブランチに到達したことを検知し、BUMP されたバージョンを持つすべてのパッケージの一覧を表示する新しいPRを開きます。 マージされると、パッケージは更新され、 publish プロパティを追加することで、公開するかどうか決めることができます。

公開

pnpm publish -r を実行する新しいスクリプト ci:publish を追加します。 PR が changeset version によってオープンされると、レジストリに公開されます。

package.json

{
"scripts": {
"ci:publish": "pnpm publish -r"
},
...
}
name: Changesets
on:
push:
branches:
- main
env:
CI: true
PNPM_CACHE_FOLDER: .pnpm-store
jobs:
version:
timeout-minutes: 15
runs-on: ubuntu-latest
steps:
- name: checkout code repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: setup node.js
uses: actions/setup-node@v3
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@v1
with:
version: pnpm ci:version
commit: "chore: update versions"
title: "chore: update versions"
publish: pnpm ci:publish
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

このアクションに関する詳細な情報とドキュメントは、 こちら をご覧ください。