package-lock.json에서 Nexus Repository 변경시 처리 방법
1. package-lock.json
파일에 대하여
package-lock.json
파일은 NPM 패키지 매니저에서 사용하는 파일 중 하나로, 프로젝트의 의존성(dependency) 정보를 저장하는 파일입니다. 이 파일은 npm install
명령을 실행할 때 자동으로 생성되며, 프로젝트에 필요한 의존성 패키지의 버전 정보를 담고 있습니다.
만약 Nexus Repository의 URL이 변경되거나 새로운 Nexus Repository를 사용해야 하는 경우, package-lock.json
파일을 업데이트해야 합니다.
package-lock.json
파일의 구조는 다음과 같습니다.
{
"name": "lahuman",
"version": "1.0.0",
"lockfileVersion": 2,
"requires": true,
"packages": {
// 의존성 패키지 정보가 포함된 객체들
},
"dependencies": {
// 프로젝트의 모든 의존성 패키지 정보가 포함된 객체들
}
}
packages
객체는 프로젝트에서 사용되는 모든 패키지 정보를 포함합니다. dependencies
객체는 packages 객체에서 사용되는 의존성 패키지 정보만을 포함합니다.
package-lock.json
파일은 프로젝트에서 사용되는 패키지의 버전 정보를 포함하고 있기 때문에, 다른 환경에서 프로젝트를 재구성할 때 항상 이 파일을 함께 사용해야 합니다. 이를 통해 모든 개발자나 서버에서 일관된 패키지 버전을 사용할 수 있습니다.
2. Repository 주소 변경 처리
package-lock.json
파일에서 주소를 확인합니다.
주소는 resolved
라는 키를 기반으로 아래 예제와 같이 설정됩니다
...
"node_modules/react-mui-validation": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/react-mui-validation/-/react-mui-validation-0.3.0.tgz",
"integrity": "sha512-NQK4A/wx8P61rZ0CNz/IdTz+Rh9RlE6PVtrwxcoIGxhKo7mDwMI1QIudvaOUX+2vnsnRFFxpNN1mr10ITMqB5Q=="
},
...
주소를 변경하는 방법은 정규식을 이용하면 쉽게 처리가 가능합니다.
변경하려는 주소를 정규식 형식에서 사용 할 수 있도록 변경합니다.
# 변경할 주소 준비
$ NEXUS_REGISTRY="https://lahuman.github.io/"
# 정규식에서 사용할 수 있는 형태로 주소 변경 - https\:\/\/lahuman\.github\.io\/
$ export REPO_URL=$(echo ${NEXUS_REGISTRY} | sed 's#/#\\/#g; s#\.#\\.#g; s/:/\\:/g;')
# sed 명령어를 이용한 주소 변경 후 new 파일을 생성
$ sed -E "s/\"resolved\": \"(.*org\/)/\"resolved\": \"${REPO_URL}/g" package-lock.json >> new
# 생성된 파일을 pacage-lock.json으로 변경
$ mv new package-lock.json
위의 명령어를 실행 후 확인을 하면 아래와 같이 주소가 변경 된 것을 확인 할 수 있습니다
...
"node_modules/react-mui-validation": {
"version": "0.3.0",
"resolved": "https://lahuman.github.io/react-mui-validation/-/react-mui-validation-0.3.0.tgz",
"integrity": "sha512-NQK4A/wx8P61rZ0CNz/IdTz+Rh9RlE6PVtrwxcoIGxhKo7mDwMI1QIudvaOUX+2vnsnRFFxpNN1mr10ITMqB5Q=="
},
...
마지막으로
package-lock.json 파일은 일반적으로 Git 저장소에 커밋하여 프로젝트의 의존성 정보를 공유합니다. 이 파일은 package.json 파일의 의존성 정보를 기반으로 자동으로 생성되기 때문에 직접 수정하지 않아도 됩니다. 하지만 때로는 package-lock.json 파일을 직접 수정해야 하는 경우도 있습니다. 예를 들어, 의존성 패키지의 버전을 업그레이드하거나, 의존성 패키지를 수동으로 추가하거나 제거하는 경우 그리고 repository 주소 변경 등이 있습니다.