나는 보통 multirepo 방식, 즉 클라이언트와 서버를 각각 나눠서 개발하고 깃관리를 하는 방식으로 사용했다. 하지만 yarn workspace를 사용하면 monorepo를 구현할 수 있다. 모노레포는 server, client등 package.json에 있는 dependency가 겹치는 모듈을 최소화하기 위해 사용한다.
개발하보면 node_moudels 폴더의 크기가 커지는데, 그를 최소화할 수 있는 셈이다.
mono는 "하나"라는 그리스어이다.
"private": true,
"workspaces": [
"server",
"client",
"common"
],
3. 그 후 yarn workspace <워크스페이스명> add <패키지이름>
으로 패키지를 설치한다. 이때 <워크스페이스명>은 server나 client common등을 의미한다.
이때 package.json의 dependencies와 devDependencies을 잘 보고 둘다 설치를 잘 해줘야한다. yarn workspace <워크스페이스명> add <패키지이름> --dev
4. npm run start, nodemon app.js와 다르게 yarn에서의 명령어는 다음과 같다.
yarn workspace server add nodemon --dev
yarn workspace server test
yarn workspace client start
// test, start는 각각의 script에 있는 다음을 참고해서 사용할 것
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
}
$ yarn help | grep -- --ignore
--ignore-scripts don't run lifecycle scripts
--ignore-platform ignore platform checks
--ignore-engines ignore engines check
--ignore-optional ignore optional dependencies
https://www.npmjs.com/package/concurrently
만약 yarn workspace를 사용한다면 루트 디렉토리에 npm으로 설치해주면 된다.
1. npm install -g concurrently 또는 npm install concurrently --save
2.
"scripts": {
"start": "concurrently -k \"yarn workspace server test\" \"yarn workspace client start\""
}