관리 메뉴

프론트엔드 정복하기

모노레포 - Yarn과 Lerna 본문

레파지토리 구성하기

모노레포 - Yarn과 Lerna

GROWNFRESH 2023. 9. 17. 09:13

Lerna 는 git 및 npm 을 사용하여 다중 패키지 레파지토리를 관리하는 작업 과정을 최적화하는 도구이다.

모노레포를 용이하게 관리할 수 있는 CLI 명령어(publish, version 등)Lerna 에 많이 있기 때문에, 배포와 버전관리러나로, 패키지 관리Yarn 을 이용해 믹스해 사용하는 케이스가 많이 있습니다.

 

 

 

 

Yarn 과 패키지 관리

yarn 은 yarn workspaces 를 추가적인 라이브러리 설치 없이 쉬운 방법으로 제공하고 있다. 불필요하게 lerna bootstrap 등의 명령을 실행하지 않으면서 안전하고 버그없이 깔끔하게 패키지를 관리해주고 있다.

 

 

 

Lerna와 명령어

 

`lerna init`

Lerna CLI 를 설치 후 `lerna init` 을 하게 되면 다음의 프로세스가 진행된다.

 

1. 루트 package.json 의 devDependency 에 lerna 설치

2. lerna.json 파일이 루트에 생성.

 

 

bootstrap

각 package.json 에 명시된 디펜던시 설치, 필요로 하는 모듈이 실제 모듈 버전과 동일하다면 추가로 다운로드하지 않고 서로 심링크를 걸어 로컬에서 사용할 수 있게 해준다.

-hoist 옵션을 사용해 호이스팅시킬 수 있다.

(yarn 을 이용하면 자동으로 호이스팅이 가능하다. 공통으로 사용되는 라이브러리를 제거해주고 루트에 호이스팅해 설치하는 과정까지 시행한다.)

 

 

version

마지막 커밋과 차이가 있는 모듈을 파악해서 버전을 올려준다. 이때 서로 심볼릭 링크가(참조 관계에 있는) 디펜던시 버전까지 올려준다.

 

publish

패키지를 레지스트리에 배포하는 데 사용된다.

  • `lerna publish from-package`를 사용할 경우 각각의 패키지의 버전과 npm 레지스트리에 실제로 배포되어있는 버전을 비교하고 차이점이 있는 패키지만 업데이트 후 배포를 진행합니다
  • `lerna publish from-git`을 사용할 경우 태그를 단 커밋에 해당하는 소스가 포함된 있는 패키지를 찾아서 업데이트 후 배포를 진행합니다

 

 

오늘은 러나와 얀을 어떤 목적으로 사용하는지 정도를 알아봤고, 추후 version, publish 등 러나의 유용한 커맨드에 대해 더 자세하게 알아보도록 하자.