Перейти до основного змісту
Версія: Next

Використання 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 слід зафіксувати в репозиторії.

Випуск змін

  1. Виконайте pnpm changeset version. Це призведе до зміни версій пакунків, раніше вказаних за допомогою pnpm changeset (і будь-яких залежних від них), а також оновить файли журналу змін.
  2. Виконайте pnpm install. Це оновить файл блокування і перезбере пакунки.
  3. Зафіксуйте зміни.
  4. Виконайте 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 можна знайти тут.