해당 프로젝트가 의존하고 있는 패키지와 각 버전은 package.json에 정의가 되어 있고, 해당 패키지를 정상적으로 사용하기 위한 의존 패키지들이 추가로 설치되어짐.
하지만, 각 패키지의 버전들이 ^ 또는~를 이용하여 정의되므로 설치 시점에 따라 각 개발자들이 상이한 버전의 캐피지를 설치하게될 확률이 발생할 수 있다.
즉, 예를 들어서..
아래와 같이 정의된 버전에 대해서는 16.8.2 이상 17.0.0 미만의 범위로 지정되어 버전이 설치될 수 있다.
"react": "^16.8.2",
각 개발자 간의 각기 다른 패키지 버전이 설치된 문제는 개발자 간의 혼선이 발생할 수 있으므로 lock 파일이 만들어지게 되었음.
package-lock.json이나 yarn.lock과 같은 패키지 잠금 파일에는 프로젝트에 패키지에 최초로 추가될 당시에 정확히 어떤 버전이 설치가 되었는지를 기록된다.
lock 파일이 존재하게 되면, 해당 파일에 기록된 버전을 기준으로 패키지가 설치되게 된다.
사용하고 있는 패키지 매니저에 따라 아래와 같이 파일이 나뉜다.
해당 프로젝트가 의존하고 있는 패키지와 각 버전은
package.json
에 정의가 되어 있고, 해당 패키지를 정상적으로 사용하기 위한 의존 패키지들이 추가로 설치되어짐. 하지만, 각 패키지의 버전들이^
또는~
를 이용하여 정의되므로 설치 시점에 따라 각 개발자들이 상이한 버전의 캐피지를 설치하게될 확률이 발생할 수 있다.즉, 예를 들어서.. 아래와 같이 정의된 버전에 대해서는 16.8.2 이상 17.0.0 미만의 범위로 지정되어 버전이 설치될 수 있다.
각 개발자 간의 각기 다른 패키지 버전이 설치된 문제는 개발자 간의 혼선이 발생할 수 있으므로 lock 파일이 만들어지게 되었음.
package-lock.json이나 yarn.lock과 같은 패키지 잠금 파일에는 프로젝트에 패키지에 최초로 추가될 당시에 정확히 어떤 버전이 설치가 되었는지를 기록된다. lock 파일이 존재하게 되면, 해당 파일에 기록된 버전을 기준으로 패키지가 설치되게 된다.
Reference