Dale Seo님 기술블로그에서 설명을 봄
npm
, yarn
이라는 자바스크립트 패키지 매니저
가 있음.package.json
파일에 해당 프로젝트가 의존하고 있는 모든 패키지 이름과 버젼을 명시dependencies
: 설치되어야 하는 패키지 / devDependencies
: 개발할 때만 필요한 패키지들)npm i(stall)
or yarn i(nstall)
명령어로 필요한 패키지를 모두 다운받을 수 있고, node_modules
디렉터리에 저장됨package.json
파일만 있으면 다운받을 수 있으니 node_modules
디렉터리는 .gitignore
에 추가한다)npm
, yarn
)에서 지원yarn
이나 npm
을 통해 프로젝트에 새로운 패키지를 설치하면package.json
에 해당 패키지가 등록 &&패키지 잠금 파일
(package-lock.json
, yarn.lock
)이 생성!!패키지 잠금 파일
에는 프로젝트에 패키지가 최초로 추가될 당시의 버젼을 기록함!!패키지 잠금 파일
이 생성된 이후에는 npm i와 같은 명렁어를 수행해도 npm registry에 등록한 최신 버젼을 설치하지 않음!패키지 잠금 파일
에 명시되어 있는 버젼으로 패키지를 설치해주기 때문에, 설치 시점에 상관없이 항상 동일한 버젼의 패키지가 설치됨을 보장받음!그래서 패키지 잠금 파일
인 package-lock.json
파일을 git에 추가하여 올려두면,
다른 사람들도 package.json
파일 뿐 아니라 package-lock.json
파일도 내려받음
그럼 모든 개발자의 pc와 배포되는 서버도 package-lock.json
에 기록된 버젼 기준으로 패키지가 설치!!! 😀
프로젝트 최초 셋팅하는 개발자는 패키지 잠금 파일
을 git 저장소에 무조건 올려야 한다!
패키지 잠금 파일
은 패키지 매니져가 패키지의 변동(새로운 설치 or 갱신/제거)이 있을 때
package.json
과 자동으로 동기를 맞춰주기 때문에 개발자가 이 파일을 직접 수정해야 할 필요는 없고 하면 안됨!
신규 패키지를 설치하거나 갱신/제거한 개발자는 package.json
과 더불어 함께 업데이트 된 패키지 잠금 파일
을 반드시 커밋해야 함!!