lerna로 생성한 package들을 프로젝트 root 단에서 사용하고자 했습니다. 프로젝트 root 단에서는 packages 내부에 있는 플러그인들을 import 해서 사용하고자 합니다. 이번 포스팅에는 lerna를 이용하여 생성한 package들을 프로젝트 root단에서 import 하고, package.json내 dependencies 들내에 설치하는 방법을 사용하고자 합니다.

사용법

1) project 생성

우선 테스트를 위한 lerna project를 생성하고자 합니다.

mkdir test-lerna
cd test-lerna

lerna initialize를 진행합니다.

lerna init -i

-i option은 independent 옵션으로써, 각 패키지의 버전을 독립적으로 운영하고자 하는 option 입니다. 관련되어 lerna init을 통해 설치하시면, packages라는 폴더가 생성되며, packages 폴더 내에 플러그인들을 생성할 수 있게 됩니다.

2) package 생성

테스트를 위한 package를 생성해 보겠습니다.

cd ./packages && mkdir test

lerna 명령어를 사용하시면, 기본 스캐폴딩 구조를 갖춘 package들을 생성할 수 있게 됩니다.

lerna create <package명>

test 플러그인을 테스트하여 생성해보도록 합니다.

module.exports = {
  'test': 'test',
};

3) root 단에서 package 끌어올리기

이제 프로젝트 root내에서 package를 root단으로 끌어올리고, 관련 플러그인을 링크시킬 수 있도록 합니다.

# 1. lerna bootstrap을 통해 생성한 플러그인들을 재정비합니다.
lerna bootstrap
# 2. link convert를 root단에서 실행함으로써 각 package들을 끌어올립니다.
lerna link convert
# 3. lerna bootstrap을 재실행하여, 끌어올린 각 package들의 정보를 재정비합니다.
lerna bootstrap

4) file 확인

프로젝트 root단에서 package.json을 재확인해봅니다. npm install을 통해서 플러그인을 설치하면, pakcage.json내에 dependencies 항목에서 플러그인을 설치할 수 있습니다. package.json을 확인해보시면,

{
  "dependencies": {
    "test": "file:packages/test"
  }
}

이처럼 file: 이라는 prefix를 통해서 packages 폴더 내부의 file을 참조할 수 있도록 package.json이 작성됩니다.