ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Yarn] Node Version 강제하기
    Framework/NodeJS 2024. 2. 15. 10:59

    회사에서 개발자 간 사용하고 있는 Node 버전이 모두 다르던 때가 있습니다. 따라서 운영되는 서버의 Node 버전을 확인하고, 문서화하여 협업하는 개발자 간에 Node 버전을 일치 시키도록 했습니다.

    하지만 모든 개발자가 프로젝트 별로 적절한 Node 버전을 사용하고 있다는 것을 신뢰할 수 없고, 다양한 프로젝트 별로 Node 버전을 다를 수 있습니다. 만약 여러 프로젝트를 관리한다면 매번 새로운 Node 버전을 설치해주거나 Node Version Manager Tool(Nvm, Fnm 등) 를 통해 변경해줘야 합니다. 이러한 과정을 매번 반복한다면 Node 버전을 바꾸는 것을 깜빡하고 개발을 하였다가 실환경에 배포된 후에 버전이 일치하지 않아 문제가 발생할 수도 있습니다.

     

    위와 같은 문제들은 package.json 파일에 속성을 추가해서 사전에 방지할 수도 있습니다. engines 라는 속성 안에 node, yarn, npm 등의 속성의 버전을 명시해주면 됩니다.

    // package.json
    {
      "name": "package-json",
      "version": "0.0.1",
      "engines": {
        "node": "16.20.1",
        "yarn": "1.22.18"
      },
    	//...
    }

     

    현재 개발 환경의 node 버전은 18.16.0 , yarn 버전은 1.22.19 입니다. 강제하고 싶은 버전은 node 는 16.20.1 , yarn 은 1.22.18 입니다. 이제 yarn Xxx ~ 명령을 실행하면 어떻게 될까요?

    기대하고 있는 Node 버전은 16.20.1 , yarn 버전은 1.22.18 인데 현재 Node 는 18.16.0 이고 yarn 1.22.19 이라는 에러를 출력합니다.

    이렇게 package.json 파일 내에 속성을 추가하여 서로 다른 버전으로 개발되는 프로젝트로 인한 문제들을 사전에 방지할 수 있습니다.

    • npm 을 사용할 때는 실행할 때는(npm run xxx) 버전을 강제할 수 없고, package 를 설치할 때만(npm install xxx)버전을 강제할 수 있는 것 같습니다

    Engines 속성을 제외하고도 OS, CPU 등 많은 속성들로 호환성을 제거하기 때문에 팀 내 개발환경마다 필요한 속성들을 추가하여 사용하면 좋을 것 같다는 생각이 듭니다.

     

    참고

    https://classic.yarnpkg.com/lang/en/docs/package-json/#toc-engines

    https://docs.npmjs.com/cli/v10/configuring-npm/package-json#engines

Designed by Tistory.