package.json
은 Node.js 프로젝트에서 사용하는 패키지 정보를 담고 있는 파일로, 이 파일은 npm
이나 yarn
과 같은 패키지 매니저를 사용할 때 자동으로 생성된다.
package.json
파일에는 다음과 같은 내용이 포함됩니다.
즉 package.json
이 존재하는 경우에는, 이러한 package.json
에 정보를 기반으로 node_modules 을 설치하게 된다.
단 package.json
이 만으로는 동일한 개발환경을 만들 수는 없다. npm의 버전이나, OS 환경 및 버전에 따라 다른 버전의 라이브러리가 설치될 수도 있다.
package-lock.json
파일은 npm
패키지 매니저에서 사용하는 파일로, package-lock.json
의 경우, 설치한 버전의 정보가 그대로 담기게 된다. 또한 package-lock.json
이 존재하면 package-lock.json
을 기반으로 node_modules 설치하게 된다. 즉, 더 정확한 패키지를 내려받을 수 있다.
package-lock.json
파일에는 다음과 같은 내용이 포함된다.
즉 package-lock.json
은 package.json
의 부족한 정보를 도와주는 파일이다. package.json
을 통해 패키지의 릴리즈에 대해 추적하여 권장되는 설치를 진행하면서도, package-lock.json
을 통해, 명확한 버전의 패키지를 설치하도록 할 수 있다.
참고로 package-lock.json
의 경우, 프로젝트에 설치한 라이브러리들의 버전명이 그대로 담기기 때문에 정보 유출을 막고자, 깃허브에서는 package-lock.json
을 원격 저장소에 담지 않는 것을 권장하고 있다.