gloriaJun / til

Lessoned Learned
3 stars 0 forks source link

set the specific package manager version on the project by yarn #98

Open gloriaJun opened 3 years ago

gloriaJun commented 3 years ago

패키지 매니저를 yarn을 사용하는 경우,

yarn set version 기능을 이용하면 특정 프로젝트에서 사용하는 패키지 매니저(yarn)의 버전을 강제화할 수 있다.

즉, 각 개발자 환경 별로 그리고 빌드 환경에 따라 달라질 수 있는 패키지 매니저 버전으로 인하여 발생할 수 있는 이슈들 미리 사전에 해당 버전을 강제화 함으로써 예방할 수 있을 것으로 생각된다.

즉, 아래와 같이 서버에는 기본으로 yarn 버전이 1.22.10이 설치되어있지만. 특정 프로젝트의 폴더에는 1.22.5를 사용하도록 하는 것과 같이 버전을 지정할 수 있다. image

set version

버전을 설정하고자 하는 프로젝트 경로에서 아래와 같이 명령을 수행한다.

❯ yarn set version 1.22.10
Resolving 1.22.10 to a url...
Downloading https://github.com/yarnpkg/yarn/releases/download/v1.22.10/yarn-1.22.10.js...
Saving it into <project_root_dir>/.yarn/releases/yarn-1.22.10.cjs...
Updating <project_root_dir>/.yarnrc...
Done!

그러면 프로젝트 루트 경로에 아래와 같은 파일들이 자동으로 생성된다.

<project_root_dir> refactor/monorepo 
❯ ls -alrt .yarn*
-rw-r--r--  1 username  admin  130 12 10 15:21 .yarnrc

.yarn:
total 0
drwxr-xr-x   3 username  admin   96 12 10 15:21 .
drwxr-xr-x   3 username  admin   96 12 10 15:21 releases

.yarnrc 파일을 살펴보면 사용자가 정의한 버전에 대한 yarn 실행 스크립트 파일의 경로를 가리키고 해당 버전으로 동작하게 하는 것으로 판단된다.

# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1

yarn-path ".yarn/releases/yarn-1.22.10.cjs"

그러므로 패키지 매니저의 버전을 지정한 경우에는 반드시 yarn set version 을 수행한 뒤 생성된 파일들을 레포에 올려서 버전 관리가 되어야 한다.