반응형

원래 평소엔 yarn을 쓰다가 회사에서 npm을 쓰길래 한동안 npm만 사용했었다. 오랜만에 yarn을 다시 사용하는데 패키지 업데이트를 하려고 yarn upgrade 명령어를 사용했더니 yarn.lock 파일만 바뀌고 package.json 파일은 그대로였다. (참고로 적자면 npm update는 package.json도 같이 바뀐다.)

찾아보니 원래 yarn upgrade는 package.json을 같이 고치지 않고 yarn upgrade left-pad@^1.0.0처럼 패키지와 버전을 직접 지정해야 같이 고친다고 한다. (이상하다? 예전엔 같이 바뀌었던 거 같은데... yarn이 중간에 수정된 건지 내가 착각한 건지 모르겠다;;;)

아무튼 해결 방법은 syncyarnlock라는 패키지를 사용하면 된다.

# 패키지 업데이트 (yarn.lock만 변경됨)
yarn upgrade

# yarn.lock을 기준으로 package.json 업데이트
npx syncyarnlock -s -k

# package.json을 기준으로 yarn.lock 업데이트
yarn

syncyarnlock 패키지는 yarn.lock 파일을 기준으로 package.json 파일을 동기화한다. 옵션은 아래 링크 참고

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

 

syncyarnlock

Syncs yarn.lock versions into an exsisting package.json file, removing dynamic numbers such as with ^, keeping static versions intact.. Latest version: 1.0.19, last published: 2 years ago. Start using syncyarnlock in your project by running `npm i syncyarn

www.npmjs.com

syncyarnlock을 사용하고 나면 이제 반대로 yarn.lock 파일의 버전이 일치하지 않는 모습을 볼 수 있다.

그래서 다시 yarn 명령어를 통해 package.json에 맞게 yarn.lock을 업데이트해준다.

이제 편ㅡ안해졌다.

일반적으로 패키지 버전을 파악할 때 package.json 파일을 참고하니까 yarn upgrade 시 package.json도 같이 수정되는 게 맞다고 생각하는데 나만 그런 건가? 흠...

반응형

+ Recent posts