개요
이번 블로그 포스트에서는 Yarn
의 Workspaces
를 사용하여 모노레포를 구성할 때, 각각의 프로젝트의 scripts
에 설정된 명령어를 실행하는 방법에 대해서 알아보도록 하겠습니다.
블로그 시리즈
이 블로그는 시리즈로 제작되었습니다. 다음 링크를 통해 다른 블로그 포스트도 확인해 보시기 바랍니다.
- [프로젝트 관리] 리포지토리 전략
- [JavaScript] 모노레포(Monorepo)를 위한 도구들
- [Monoepo] NodeJS의 모듈 불러오기
- [Monorepo] Symlink
- [Monoepo] Yarn Workspaces
- [Monoepo] Yarn Workspaces의 Hoisting
- [Monoepo] Yarn Workspaces의 명령어
- [Monoepo] pnpm을 사용하여 모노레포 만들기
예제
각각의 프로젝트의 scripts
에 설정된 명령어를 실행하는 방법을 알아보기 위해 예제를 만들어 봅시다. 우선, 다음과 같이 폴더와 파일 구조를 생성합니다.
.
├── package.json
└── src
├── module-a
│ ├── index.js
│ └── package.json
└── module-b
├── index.js
└── package.json
module-a
의 package.json
은 다음과 같습니다.
// src/module-a/package.json
{
"name": "module-a",
"version": "1.0.0",
"main": "index.js",
"scripts": {
"start": "node index.js"
}
}
module-b
의 package.json
은 다음과 같습니다.
// src/module-b/package.json
{
"name": "module-b",
"version": "1.0.0",
"main": "index.js",
"scripts": {
"start": "node index.js"
}
}
그리고 module-b
의 index.js
는 다음과 같습니다.
// src/module-b/index.js
console.log('module-b');
module-a
의 index.js
는 다음과 같습니다.
// src/module-a/index.js
console.log('module-a');
require('module-b');
마지막으로 루트 폴더의 있는 package.json
파일을 다음과 같이 수정합니다.
{
"name": "monorepo",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"private": true,
"workspaces": {
"packages": ["src/*"]
}
}
이제 다음 명령어를 실행하여 패키지를 설치하고, module-a
와 module-b
의 scipts
에 설정된 명령어를 실행해 봅시다.
yarn install
cd ./src/module-a
yarn start
cd ../..
cd ./src/module-b
yarn start
그럼 다음과 같이 module-a
와 module-b
가 잘 실행되는 것을 확인할 수 있습니다.
# cd ./src/module-a
# yarn start
module-a
module-b
# cd ./src/module-b
# yarn start
module-b
Workspaces의 명령어
예제와 같이 다음 명령어를 사용하여 각각의 프로젝트에 설정된 명령어를 실행할 수 있습니다.
yarn install
cd ./src/module-a
yarn start
cd ../..
cd ./src/module-b
yarn start
하지만 매번 해당 프로젝트로 이동한 후 명령어를 실행할 수는 것은 효율적이지 않습니다.
Yarn
은 이런 문제를 해결하기 위해 다음과 같은 Workspaces
는 명령어를 지원합니다.
yarn workspace <workspace_name> <command>
이 명령어를 활용하면 프로젝트의 폴더로 이동하지 않고도 명령어를 실행할 수 있습니다. <workspace_name>
에는 package.json
의 name
에 설정된 값이 들어가며, <command>
에는 scripts
에 설정된 명령어가 들어갑니다. 앞선 예제의 명령어를 다음과 같이 실행할 수 있습니다.
yarn workspace module-a start
yarn workspace module-b start
명령어를 실행하면 다음과 같이 결과값이 잘 표시되는 것을 확인할 수 있습니다.
# yarn workspace module-a start
module-a
module-b
# yarn workspace module-b start
module-b
완료
이것으로 Yarn
의 Workspaces
로 구성된 모노레포에서 각각의 프로젝트에 설정된 명령어를 간단하게 실행하는 방법에 대해서 알아보았습니다. 여러분도 매번 해당 프로젝트로 이동하여 명령어를 실행하고 계셨다면 Workspaces
의 명령어를 사용하여 좀 더 편하게 명령어를 실행해 보시기 바랍니다.
제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!
앱 홍보
Deku
가 개발한 앱을 한번 사용해보세요.Deku
가 개발한 앱은 Flutter로 개발되었습니다.관심있으신 분들은 앱을 다운로드하여 사용해 주시면 정말 감사하겠습니다.