모노레포 - ChoDragon9/posts GitHub Wiki

모노레포란

https://en.wikipedia.org/wiki/Monorepo

형상 관리 시스템에서 다수 프로젝트를 단일 저장소에 저장하는 소프트웨어 개발 전략이다.

모노레포 구성을 위한 기술

Step1. npm 패키지 만들기

$ mkdir my-core && cd my-core
$ npm init
$ touch index.js
$ cd ..
$ mkdir my-repo && cd my-repo
$ npm init
my-core/index.js
module.exports = (a, b) => a + b

Step2. npm 심볼릭 링크 만들기

$ cd my-core
$ npm link # 심볼릭 링크 설정
$ cd ../my-repo
$ npm link my-core # 심볼릭 링크 설치
$ touch index.js
$ node index.js
  • npm link: 해당 폴더의 패키지명을 기준으로 심볼릭 링크를 설정할 수 있다.
  • npm link <package>: 등록된 심볼릭 링크를 설치한다. 설치 시 다른 패키지와 동일하게 node_modules 폴더에 설치된다.
my-repo/index.js
const sum = require('my-core')
console.log(sum(1, 2)) // 3

심볼릭 링크된 패키지 코드 변경

심볼릭 링크로 등록된 코드변경 시, 해당 패키지를 사용하는 모듈은 바로 변경된 코드를 사용하게 된다.

my-core/index.js 코드를 아래와 같이 변경하고

module.exports = (a, b) => (a + b) * 10

my-repo/index.js를 실행하면 다음과 같다.

$ node my-repo/index.js
$ 30
⚠️ **GitHub.com Fallback** ⚠️