Використання Changesets з pnpm
На момент написання цієї документації остання версія pnpm була v10.4.1. Остання версія Changesets була v2.28.0.
Встановлення
Щоб встановити changesets у робочому просторі pnpm, встановіть changesets як залежність dev у корені робочого простору:
pnpm add -Dw @changesets/cli
Потім запустіть команду changeset init, щоб згенерувати конфігурацію changeset:
pnpm changeset init
Додавання нових наборів змін
Щоб згенерувати новий набір змін, виконайте pnpm changeset
у корені сховища. Згенеровані файли markdown в теці .changeset
слід зафіксувати в репозиторії.
Випуск змін
- Виконайте
pnpm changeset version
. Це призведе до зміни версій пакунків, раніше вказаних за допомогоюpnpm changeset
(і будь-яких залежних від них), а також оновить файли журналу змін. - Виконайте
pnpm install
. Це оновить файл блокування і перезбере пакунки. - Зафіксуйте зміни.
- Виконайте
pnpm publish -r
. Ця команда опублікує всі пакунки, які мають версії, яких ще немає в реєстрі.
Інтеграція з GitHub Actions
Для автоматизації процесу ви можете використовувати changeset version
з GitHub actions. Дія визначить, коли файли набору змін надійдуть до гілки main
, а потім відкриє новий PR зі списком усіх пакунків з оновленими версіями. PR автоматично оновлюватиметься щоразу, коли до main
надходитиме новий файл набору змін. Після обʼєднання пакунки буде оновлено, і якщо для дії було вказано publish
, їх буде опубліковано за допомогою цієї команди.
Додайте скрипт publish
Додайте новий скрипт з назвою ci:publish
, який виконує pnpm publish -r
. Він буде публікувати в реєстрі після того, як буде злитий PR, створений за допомогою changeset version
. Якщо пакунок є публічним з вказаною областю дії, додавання --access=public
може бути потрібним для запобігання того, що npm відхиляє публікацію.
package.json
{
"scripts": {
"ci:publish": "pnpm publish -r"
},
...
}
Додайте workflow
Додайте новий робочий процес за адресою .github/workflows/changesets.yml
. Цей робочий процес створить нову гілку і PR, тому в налаштуваннях репозиторію слід надати Actions права читання і запису (github.com/<repo-owner>/<repo-name>/settings/actions
). Якщо на кроці publish
включено вхідні дані changesets/action
, ре позиторій також має містити маркер авторизації для npm як секрет репозиторію з іменем NPM_TOKEN
.
.github/workflows/changesets.yml
name: Changesets
on:
push:
branches:
- main
env:
CI: true
jobs:
version:
timeout-minutes: 15
runs-on: ubuntu-latest
steps:
- name: Checkout code repository
uses: actions/checkout@v4
- name: Setup pnpm
uses: pnpm/action-setup@v4
- name: Setup node.js
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
- name: Install dependencies
run: pnpm install
- name: Create and publish versions
uses: changesets/action@v1
with:
commit: "chore: update versions"
title: "chore: update versions"
publish: pnpm ci:publish
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
Більш детальну інформацію та документацію щодо дії changesets можна знайти тут.