メインコンテンツまでスキップ
Version: Next

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 }}

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