`npm`을 사용하여 Node.js 프로젝트를 관리하다 보면, 때때로 기본 레지스트리 외의 경로에서 패키지를 설치하거나, 프라이빗 레지스트리 접근, 인증 정보 설정 등 다양한 커스터마이징이 필요할 수 있습니다. 이러한 경우, 프로젝트별 또는 전역적으로 설정을 관리할 수 있는 `.npmrc` 파일이 매우 유용합니다. 이번 글에서는 `.npmrc` 파일을 활용하여 설정을 최적화하는 방법과 `package.json`의 `dependencies` 항목에서 특정 패키지를 개별적인 저장소에서 설치하는 방법을 자세히 설명하겠습니다.
1. `package.json`에서 패키지 설치 경로 설정하기
`npm`의 기본 동작은 모든 패키지를 중앙 레지스트리인 `npmjs.org`에서 설치하는 것입니다. 그러나 때때로 우리는 GitHub 같은 특정 저장소에서 패키지를 설치하거나, 프라이빗 레지스트리에서 설치해야 할 필요가 있습니다. 이를 위해 `package.json`에서 특정 패키지의 설치 경로를 설정할 수 있습니다.
GitHub에서 패키지 설치
GitHub에 호스팅된 패키지를 설치하려면, 패키지의 GitHub 경로를 다음과 같이 지정할 수 있습니다:
{
"dependencies": {
"패키지이름": "github:사용자이름/레포지토리이름#브랜치이름"
}
}
예를 들어, 특정 레포지토리의 `main` 브랜치에서 패키지를 설치하고 싶다면:
{
"dependencies": {
"my-package": "github:username/my-repo#main"
}
}
특정 URL에서 패키지 설치
패키지를 `.tar.gz` 파일이나 zip 파일 형식으로 호스팅된 URL에서 설치할 수도 있습니다:
{
"dependencies": {
"패키지이름": "https://example.com/path/to/package-1.0.0.tgz"
}
}
이 설정은 내부 네트워크나 외부 URL에서 호스팅된 패키지를 설치할 때 유용합니다.
Git 저장소 URL에서 패키지 설치
Git 저장소에서 직접 패키지를 설치하려면, 다음과 같이 Git URL을 사용할 수 있습니다:
{
"dependencies": {
"패키지이름": "git+https://github.com/사용자이름/레포지토리이름.git"
}
}
특정 브랜치나 커밋에서 패키지를 설치하려면 해시(#)와 함께 브랜치나 커밋 ID를 추가합니다:
{
"dependencies": {
"패키지이름": "git+https://github.com/사용자이름/레포지토리이름.git#브랜치이름"
}
}
2. `.npmrc` 파일의 활용
`.npmrc` 파일은 npm의 설정을 관리하는 파일로, 프로젝트별 또는 사용자 전역으로 설정할 수 있습니다. 이를 통해 프라이빗 레지스트리 사용, 인증 정보 설정, 캐시 경로 지정 등 다양한 설정을 손쉽게 관리할 수 있습니다.
`.npmrc` 파일의 위치
- 전역 설정: `~/.npmrc` (사용자 홈 디렉토리)
- 프로젝트별 설정: 프로젝트 루트 디렉토리의 `.npmrc`
- 시스템 설정: `/etc/npmrc` (리눅스 기준)
프로젝트의 `.npmrc` 파일 설정은 전역 설정을 덮어쓰며, 프로젝트별로 독립적인 설정이 가능합니다.
주요 설정 예시
프라이빗 레지스트리 사용
특정 레지스트리에서 패키지를 설치하도록 설정할 수 있습니다.
registry=https://custom-registry.example.com/
스코프별 레지스트리
특정 스코프의 패키지를 별도의 레지스트리에서 설치하도록 지정할 수 있습니다.
@myscope:registry=https://custom-registry.example.com/
인증 토큰 설정
프라이빗 레지스트리에 접근할 때 필요한 인증 토큰을 설정할 수 있습니다.
//custom-registry.example.com/:_authToken=YOUR_AUTH_TOKEN
캐시 디렉토리 변경
npm의 캐시 경로를 변경하려면 다음과 같이 설정합니다.
cache=/path/to/your/npm/cache
프록시 설정
회사 네트워크 내에서 프록시 서버를 통해 npm을 사용할 경우 프록시 설정이 필요합니다.
proxy=http://proxy.example.com:8080
https-proxy=http://proxy.example.com:8080
결론
`.npmrc` 파일과 `package.json`의 설치 경로 설정을 통해, npm의 동작을 세부적으로 조정하고 프로젝트의 요구사항에 맞는 환경을 구축할 수 있습니다. 특히, 다양한 저장소에서 패키지를 설치하거나 프라이빗 레지스트리와의 연동이 필요한 경우, 이 방법들을 통해 효율적으로 프로젝트를 관리할 수 있습니다. 이러한 설정을 잘 활용하여 개발 환경을 최적화하고, 팀의 생산성을 높일 수 있습니다.