ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Monorepo 관리를 위한 Lerna 살펴보기
    Etc 2024. 2. 7. 10:56
    반응형

    Lerna란?

    Lerna란 JavaScript를 위한 Monorepo의 구성과 관리를 도와주는 툴.

    npm 기반으로 패키지의 버전관리, 배포, 모듈 종속성 관리 등을 할 수 있으며, 작성일 기준으로 7.4.2 버전까지 출시되었다.

    • 각 기능에 대해서는 아래 Lerna 주요 명령어에서 정리.
    • Lerna v5부터는 빌드 툴인 오픈소스 빌드 시스템인 nx가 도입되어 스크립트 병렬 실행, 캐싱 작업을 추가적으로 지원하고 있다.

     

    Lerna 적용 방법

    기존 혹은 새 프로젝트에서 아래와 같이 init 명령어를 통해 Lerna를 적용한다.

    $npx lerna init
    

    init 명령어 실행시 lerna를 사용하기 위한 설정 파일(lerna.json)과 npm 설정 파일들이 생성된다.

    기존 프로젝트에 적용한다면 존재하는 패키지 파일들을 --package옵션으로 함께 정의해야 적용할 수 있다.

    # Passing a single pattern
    npx lerna init --packages="packages/*"
    # Passing multiple patterns
    npx lerna init --packages="foo/*" --packages="bar/*"
    

    lerna.json

    lerna.json 파일은 lerna를 설정하기 위한 파일로 버전, 사용할 패키지 관리자등을 설정할 수 있다.

    {
    	"$schema": "node_modules/lerna/schemas/lerna-schema.json",
    	"version": "0.0.0",
    	"packages": [
    		"packages/*"
    	]
    }
    • lerna는 기본적으로 npm기반으로 되어 있으나, yarn과 같이 다른 패키지 관리자를 사용하고 싶을 경우 npmClient 옵션을 추가하여 설정할 수 있다.
    • 변경 사항을 관리할 수 있는 change log를 자동으로 생성해주는데 자세한 설정 방법은 아래 링크를 참고한다. https://github.com/lerna/lerna-changelog

     

    Lerna 주요 명령어

    publish

    npm publish처럼 패키지를 배포하는 것은 동일하나, lerna는 모든 패키지를 한번에 배포할 수 있다.

    • package.json에 “private”이 활성화된 패키지는 게시하지않는다. (npm publish와 동일)

    bootstrap

    각 패키지에 종속된 node module을 설치하고 중복되는 모듈을 정리하고 연결한다.

    • node module을 설치하고 관리하는 것은 패키지 관리자의 workspaces로 정의하는 것이 더 적합하다는 이유로 lerna v7부터 제거되었다.

    run

    https://lerna.js.org/docs/features/run-tasks

    각 패키지의 packgage.json에 정의된 스크립트를 실행한다.

    아무런 옵션없이 실행하면 각 패키지의 모든 스크립트를 실행하며, lerna run test, lerna run test --scope=header 등 특정 스크립트를 지정하거나 특정 패키지를 지정할 수 있다.

     

    그외 명령어 및 옵션 참고

    https://lerna.js.org/docs/api-reference/commands

    'Etc' 카테고리의 다른 글

    2021 - 2023 회고 및 2024 목표  (2) 2024.01.19
    [Mac] 이클립스를 하나 더 실행하는 방법  (0) 2020.11.09

    댓글