티스토리 뷰

발생일: 2021.02.22

키워드: yarn config, npm config, registry, npmrc, private registry

문제:

 

갑자기 전체 태스크가 실패했고, 건너자리 A가 코드 원복까지 했는데도 계속 지속됐다.

에러 문구를 보니 특정 npm 모듈의 리파지터리를 찾지 못하는 문제다.

 

node_modules 디렉토리를 날리고 새로 설치해도 동일한 문제가 발생했다고 한다.

 

이번에 npm registry 를 변경하는 작업을 준비하고 있었는데,

새로 설치된 모듈이 아직 준비되지 않은 새 레지스트리를 바라본 것이 문제였다.

 

왜 그런걸까?

 


해결책:

 

이번에 옮기려던 레지스트리는 도메인과 권한이 기존과 모두 달랐다.

예를 들어, https://old_registry.example.com 에서 https://new_registry.example.com 으로 옮기는 셈이다.

 

개발자들이 레지스트리 설정을 깜빡하는 경우가 있어서,

아래처럼 package.json 의 preinstall 스크립트로 config 를 설정하는 걸 미리 넣어뒀었다.

 

[package.json]

{

    ...

    "preinstall": "yarn config set registry https://old_registry.example.com" 

    ...

}

 

스크립트가 있어서 문제될 게 없다고 생각했는데,

문제는 테스트하던 개발자가 로컬 디바이스에서 CLI로 레지스트리를 설정했기 때문이었다.

 

    $ npm config set registry https://new_registry.example.com

 

npm 의 설정이 yarn 의 설정에 우선한 것이 문제였다.

 

 

다른 포스트를 찾아보니, config 에 대한 우선순위가 아래처럼 된다고 한다.

local npmrc > global npmrc > local yarnrc

 

 

여튼, 우리는 아래처럼 정리했다.

- preinstall 에서 처리하던 설정은 모두 제거

- 레지스트리는 .npmrc 파일에 정의

- 각 개발자들의 로컬 npm config 는 정리

 

 

.npmrc 파일에 레지스트리를 추가하려면, 파일을 생성해서 아래 내용을 넣어주면 된다.

 

registry=https://npm.bar.com

 


논의:

 

참고로 우리는 버다씨오(verdaccio) 를 사용해서 레지스트리를 구축해뒀었다.

헌데, 버다씨오에서 해주던 프라이빗 리파지터리 기능을 이제는 깃헙에서도 할 수 있다!

 

우리 팀의 레지스트리도 깃헙으로 다 옮겼다!

- 깃헙 패키지: github.com/features/packages




참고:

yarnrc, npmrc 우선순위: qkrdudwls99.medium.com/priority-of-yarnrc-npmrc-a47dc01797e6

반응형
댓글
공지사항