npm i 와 npm ci의 차이 - 읽고오기
뇌피셜 주의
문제점
- npm i 는 package-lock.json 파일을 변경시킬 수 있음
- 현재 매번 필요한 사람이 패키지를 설치하고 있어서 할때마다 package-lock.json 파일 변경됨 - 이건 어쩔 수 없음
→ 문제는 다른 사람이 이걸 pull받고 다시 npm i로 설치하면 package.json과 lock.json에 file change가 발생하기 때문에 또 바뀐거 push하고 merge됨 → 누군가는 충돌나서 오류가 생김
결론
- 모두가 동일한 package-lock.json 파일을 가지고 있어야함
- 동일한 의존성, 버전을 가지고 있어야함
- 이거 왜 이렇게 바뀜? 에 집중하기 보다는 동일한 파일을 가지고 있는 것에 초점을 맞추는게 좋아보임
- package 임의로 설치하지 말기
- 설치가 필요하면 무조건 공지한 후 설치하기
- 필요한 패키지들은 미리 초기세팅때 설치해 놓아야 했을듯…
- package 설치할 일이 있으면,
npm i xx
로 설치 후 변경된package-lock.json
파일 git에 올린 후, pull 받아서npm ci
로 설치npm i
로 하면 또 바뀔 수 있으니 무조건npm ci
로 설치하고, 해당 파일은 절대 임의로 수정하지 말기- 이러면 package-lock.json 파일은 변경될 일이 없음
생각해본 방법
- 임의로 패키지를 설치하거나 충돌난다고 임의로 package 파일 건드는 거 절대 금지
- 필요시에는 논의 하에 정확한 명칭,버전을 정한 후 대표로 한명이 설치
- 나중에 다운그레이드하거나 하게되면 귀찮음
- label 중에
Package
라는 걸 이용해서 내가 패키지 설치했다는 걸 알리기
- 한개의 커밋에 package.json , package-lock.json 파일을 묶어서 커밋하기
- 절대 다른 file change 끼워넣지 말기
- 다른 사람들도 임의로 바꾸고 다른 커밋에 끼워넣지 말기
- 본인이 직접 로컬 등등에서 실행해서 문제 없는지 확인 후에 push하기
- 커밋 메시지는 버전(기존 버전 + 1) + 어떤 거 설치했는지 대략적으로
- Ex) v3 - msw 및 관련 패키지 설치..
- 각자 npm 버전 확인하기 - 전 10버전임