Yarn WorkSpace

박주홍·2022년 2월 21일
0

  • yarn workspace
  • 나는 보통 multirepo 방식, 즉 클라이언트와 서버를 각각 나눠서 개발하고 깃관리를 하는 방식으로 사용했다. 하지만 yarn workspace를 사용하면 monorepo를 구현할 수 있다. 모노레포는 server, client등 package.json에 있는 dependency가 겹치는 모듈을 최소화하기 위해 사용한다.
    개발하보면 node_moudels 폴더의 크기가 커지는데, 그를 최소화할 수 있는 셈이다.

    mono는 "하나"라는 그리스어이다.

    사용법

    1. yarn init
    2. package.json에 다음과 같은 속성과 속성 값을 추가한다.
      다만 package.json는 루트폴더 즉 client와 server폴더 모두 가지고있어야한다.
    "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



    별도로 npm concurrently사용법

    https://www.npmjs.com/package/concurrently

    npm 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\""
      }
    1. yarn start
      yarn start로 실행하면 서버와 클라이언트 동시에 실행가능하고 다음과 같은 -k 옵션을 붙이면 클라이언트나 서버 둘 중 하나가 죽으면 동시에 죽을 수 있도록 해준다.
    profile
    고통없는 성장은 없다고 할 수 있겠다....

    0개의 댓글