pnpm에서 changesets 사용하기
note
이 문서를 작성할 당시 최신 pnpm 버전은 v6.14 였습니다. 최신 Changesets 버전은 v2.16.0 이었습니다.
설치
pnpm 워크스 페이스에서 changesets를 설정하려면 워크스페이스의 루트에서 개발 의존성으로 changesets를 설치하세요.
pnpm add -Dw @changesets/cli
그런 다음 changesets의 초기화 명령어를 실행합니다.
pnpm changeset init
새 changesets 추가하기
새 changesets를 생성하려면 저장소의 루트에서 pnpm changeset를 실행하세요. .changeset 디렉토리에 생성된 마크다운 파일은 저장소에 커밋되어야 합니다.
변경 사항 릴리즈하기
- pnpm changeset version을 실행합니다.- pnpm changeset(및 이들의 의존 항목)로 지정된 패키지의 버전을 bump하고 changelog 파일을 업데이트합니다.
- pnpm install를 실행합니다. 이를 통해 lockfile을 업데이트하고 패키지를 재빌드합니다.
- 변경 사항을 커밋합니다.
- pnpm publish -r를 실행합니다. 이 명령어는 아직 레지스트리에 없고 버전 충돌된 모든 패키지들을 게시합니다.
GitHub Action 사용하기
프로세스를 자동화하기 위해 changeset version 를 GitHub Action과 함께 사용할 수 있습니다.
패키지 버전 증가
changeset 파일이 main 브랜치에 도착하면 action이 감지하며, bump된 버전에 대한 모든 패키지를 나열하는 새 PR을 엽니다. 머지되면 패키지가 업데이트되고 publish 속성을 추가함으로써 게시 여부를 결정할 수 있습니다.
게시
Add a new script ci:publish which executes pnpm publish -r. It will publish to the registry once the PR is opened by 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 }}
이 작업에 대한 추가 정보 및 문서는 여기에서 찾을 수 있습니다.