정의

npm은 환경 설정을 CLI, 환경 변수, npmrc 파일을 이용하여 가져옵니다. 

npm config 명령어를 이용하면 npmrc의 기본 유저, 글로벌 설정을 변경할 수 있습니다.

 

파일

npmrc 파일은 사용처별로 4가지 가 있을 수 있습니다.

  • 프로젝트 설정 (/path/to/my/product/.npmrc)
  • 유저별 설정 (~/.npmrc)
  • 글로벌 설정 ($PREFIX/etc/npmrc)
  • npm 내장 설정 (/path/to/npm/npmrc)

각 사용처별 모든 파일들은 key=value 형식 포맷입니다.

${}를 이용하여 환경 변수를 replace 하여 사용할 수 있습니다.

prefix = ${HOME}/.npm-packages​

주의 할 점은 각 파일들은 우선순위에 따라 덮어쓰여질 수 있습니다.  

예를 들어서, 유저별 설정은 글로벌 설정보다 우선순위가 높으므로 동일한 키가 있으면 덮어씁니다.

key[] = "first value"
key[] = "second value"

주석

.npmrc 파일 내에 주석을 사용할 수 있습니다. https://github.com/npm/ini 스펙을 따르며,

; 또는 # 를 라인 맨 앞에 명시해주면 됩니다.

 

프로젝트별 설정 

프로젝트 파일 최상단(node_modules, package.json 과 같은 path)에 .npmrc 파일로 프로젝트별 설정을 할 수 있습니다.

이 설정은 npm 을 실행하고 있는 프로젝트 루트에만 영향을 줄 수 있고, 이미 배포한 모듈의 경우에는 적용되게 할 수 없습니다.
( @scope로 배포한 모듈을 받는 클라이언트의 프로젝트에  강제로 npmrc 파일 설정이 적용되도록 못한다는 뜻) 

npm install -g 명령어의 경우 해당 설정이 적용되지 않으니 주의해야 합니다.

 

유저별 설정

각 사용자 기기 $HOME/.npmrc 경로에 파일을 생성하여 적용할 수 있습니다.

 

글로벌 설정

$PREFIX/etc/npmrc 경로에 파일을 생성하여 적용할 수 있습니다. 우선순위가 낮기 때문에 다른 설정에 의해 덮여쓰여질 수 있습니다.

 

내장 설정

path/to/npm/

업데이트가 되어도 수정되지 않는 내장 설정입니다. ./configure 로 설정 할 수 있습니다.

배포할 때, 기본 설정을 overwrite하기 위해 표준 방법으로 사용하기도 합니다.

 

PS

사내 npm registry에 등록된 라이브러리를 가져와서 사용하고 있었는데, 

빌드 과정에서 사내 npm registry를 찾는것이 아닌, npm 공용 registry 주소를 찾는 이슈가 있었다. 
.npmrc내에는 아래와 같이 명시했었다. 

test-viewer:registry=https://registry.{사내도메인}/api/npm/npm-{사내}/

해당 라이브러리를 퍼블리시 할 때, 별도의 scope를 주지 않고 registry만 명시해서 배포되어서, 

발생한 문제였고, scope (@smart) 를 명시해준 뒤 해결 되었다.

@smart:registry=https://registry.{사내도메인}/api/npm/npm-{사내}/

+ Recent posts