모노레포 세팅
모노레포 세팅
레포지토리 생성
1
2
➜ git clone study-monorepo
➜ code study-monorepo
yarn세팅
1
2
3
➜ yarn -v //yarn 버전확인
➜ yarn set version berry // 해당 폴더에서만 yarn berry 사용
➜ yarn init -y // 프로젝트 설정
package.json
1
2
3
4
5
6
7
8
9
{
"name": "study-monorepo",
"workspaces": {
"packages": [
"package/*"
]
},
"packageManager": "yarn@4.5.1"
}
vite + React
1
2
➜ mkdir packages
➜ cd packages
1
2
3
4
➜ yarn create vite project1
➜ cd project1
➜ yarn
➜ yarn dev
App.tsx에서 타입스크립트 에러 시
https://yarnpkg.com/getting-started/editor-sdks
1
2
3
➜ cd ../../ //root 이동
➜ yarn add -D typescript prettier eslint
➜ yarn dlx @yarnpkg/sdks vscode
vscode에서 타입스크립트 사용 지정
tsconfig.base.json
1
2
cd ../../ //root 이동
➜ mkdir tsconfig.base.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
"compilerOptions": {
"target": "ESNext", //최신자바스크립트
"useDefineForClassFields": true,
"lib": ["DOM", "DOM.Iterable", "ESNext"],
"allowJs": false,
"skipLibCheck": false,
"esModuleInterop": false,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"module": "ESNext",
"moduleResolution": "Node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react"
},
}
tsconfig.json
1
➜ cd packages/project1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"extends": "../../tsconfig.base.json",
"files": [],
"compilerOptions": {
"baseUrl": ".",
"types": ["vite/client"],
"paths": {
"~/*": ["src/*", "static/*"]
}
},
"references": [
{ "path": "./tsconfig.app.json" },
{ "path": "./tsconfig.node.json" }
]
}
package 내의 project간 코드 공유
#### 다른 프로젝트도 세팅하기
1
2
➜ cd package/common
➜ yarn init
1
2
3
4
5
6
//package.json
{
"name": "@monorepo/common",
"packageManager": "yarn@4.5.1",
"main": "index.ts"
}
1
2
3
4
//index.ts
const str: string = "이 변수를 공유해보자!";
export default str;
1
2
➜ cd ../../ //roo이동
➜ yarn //프로젝트 간 연결
1
2
3
4
5
6
7
8
9
10
11
➜ cd package/project1
//App.tsx
import "./App.css";
import str from "@monorepo/common";
function App() {
return <>{str}</>;
}
export default App;
1
➜ yarn workspace project1 dev
root에서 run dev
1
2
➜ yarn workspace user dev
// yarn workspace 프로젝트이름 스크립트이름
참고자료
모노레포 템플릿 레포지토리
@minboykim-Yarn berry로 모노레포 구성하기
@minify yarn berry로 workspace(monorepo) 구성하기
This post is licensed under CC BY 4.0 by the author.