현재 동아리 내 디자인시스템에서 Changesets으로 버전관리를 하고 있는데 잘 쓰기 위해서는 명확하게 알 필요가 있을 것 같기도 했고, 혹시나 다른 라이브러리와 더 적합한지도 보기 위해 정리해보았다.

요구사항

먼저 디자인시스템의 요구사항을 알아야 비교할 수 있을 것 같다.

Changesets vs Semantic-Release

버전 관리 도구로 유명한 것이 Changesets와 Release 이 2개가 있는데 이 도구들을 가지고 요구사항과 비교해보자.

적합한 라이브러리는?

위에 요구사항들과 비교했을 때, Changesets 라이브러리가 더 프로젝트에 적합해보인다. 모노레포, 멀티 패키지 구조에 적합하다는 점과, 버저닝 전에 업데이트된 패키지를 선택하여 버저닝 할 수 있다는점에서 더 적합하다고 생각했다.

사용흐름

  1. npx changesets init을 통해 .changeset 폴더를 생성하여 이니셜라이징을 한다.

    changeset 폴더에서는 fixed, linked, baseBranch 등과 같은 옵션들로 버저닝할 브랜치와 패키지 그룹을 지정할 수 있다.

  2. 패키지를 구성하고 각각의 패키지에 package.json을 설정해준다.

  3. npm changeset, npm changeset add 을 통해 패키지의 버저닝을 진행한다.

    npm changeset, npm changeset add 을 해주면 패키지를 고르는 창이 뜨고 고르고 난 후에 버전 종류(major, miner, patch)를 고르게 된다. 고르게 되면 .changeset 에 버저닝된 패키지의 정보가 담긴 마크다운 파일이 생긴다. 이를 기반으로 버저닝할때 패키지의 버전이 바뀌게 된다.

  4. npm changeset version을 통해 버저닝을 진행한다.

    버저닝을 하게되면 .changeset 에 있는 마크다운 파일을 기반으로 패키지들의 package.json 버전이 바뀌게 된다. 그리고 이를 기반으로 pr이 올려진다.

  5. pr 을 머지하고 npm changeset release를 통해 패키지를 배포한다.

    npm changeset release 를 통해 버저닝된 패키지들이 npm에 올라간다. 보통 이과정은 github action changesets/action@v1 action을 쓰는데 깃허브 액세스 토큰과 NPM 액세스 토큰을 필요로 한다.