HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
✍🏻
Learnary (learn - diary)
/
협업을 위한, 같은 개발환경을 구성하기 위한 package.json, package-lock.json

협업을 위한, 같은 개발환경을 구성하기 위한 package.json, package-lock.json

progress
Done
Tags
PipeLine
 
공통점차이점위 두 파일은 협업시 꼭 필요한 녀석들이다.
 

공통점


package.json
  • 해당 프로젝트의 스펙 및 의존성들을 알 수 있는 패키지
 
npm install
터미널에서 명령어를 입력하면 자동적으로 슈슈슉 무엇인가가 다운로드 되어지는 것을 많이 봐왔을 것이다.
해당 명령어 실행하게 되면 package.json을 읽고 필요한 모듈 즉 라이브러리들을 다운로드 한다.
 
npm init
해당 명령어를 수행하면 자동적으로 해당 프로젝트의 스펙, 의존성을 관리해주는 package.json 파일이 자동으로 생겨나게 된다.
 
package-lock.json
  • 해당 프로젝트의 상세한 버전의 의존성을 알 수 있는 패키지
 

차이점


package-lock.json
정확한 의존성을 가지고 있는 녀석이다.
 
[package.json]
notion image
  • package.json 파일인데 보면 이 눈웃음 “^”이 있죠?
  • 그와 언젠든지 상위 호환되는 것들은 가져올 수있도록 하는 허용하는 표시입니다.
  • “~” 해당 키웓드도 사용할 수 있어요
 
즉 이것은 version Range Syntax에서 쓰립니다.
 
version Range Syntax 는 만족하는 패키지라면 언제든지 업데이트 된 버전의 패키지가 설치되어도 괜찮다는 뜻입니다. ⇒ 이게 package.json 에 쓰이는 예약어
 
 
  • node_module 공유하면 되는거 아니냐? ⇒ 무겁다 많다..즉 비싸다 라고 할수 있다.
 
😤
package.json은 현재 서비스가 동작하기 위해 필요한 다른 패키지들의 버전 범위 package-lcok.json은 현재 패키지에 설치된 정확한 버전 여기서 패키지는 node_modules 라는 패키지에요
 

위 두 파일은 협업시 꼭 필요한 녀석들이다.


왜냐하면 협업을 하기 위한 개발자의 환경을 동일하게 하기 위해서 이기 때문이다.
해당 라이브러리는 같지만 버전 즉 시간이 지남에 따라 달라지기 때문이다.
1.01버전에서는 a() 라는 메소드가 생성되고 1.02버전에서는 a()메소드가 사라지고 b()메소드가 새로 생성될 수 있다.
개발자가 협업시 다른 버전으로 개발을 진행한다면 해당 오류를 맞이하면서 각 개발자가 홀로 싸우게 되고 엄청난 인력 손실이 난다.
 
예시_
개발자 a가 sample이라는 패키지 작업시 그당시에는 3.5.2가 node_module에 이써요
얼마뒤 b개발자가 새로 왓어요 sample 패키지 작업에 투입됩니다.
npm install 하고 했을 때 그 a 개발자가 사용할 당시 3.5.2이였는데, 3.6.0으로 새로 받아왔어요
 
동작 안할수도 있다. 하지만 동작하게 된다면 이렇게 개발환경이 달라선 안대!!!!!
 
분명 같은 Task를 수행하는데.. 이러다간 모두가 힘들어져!!
 
3.5.2에서만 제공되는 것이 있을 수있고 3.6.0 버그가 발견될 수도 있고. 이런 것들을 점검한 후에 써야합니다.