NodeJS NPM 의존성 관리 등 종합

horiz.d·2023년 3월 24일
0

리액트 꿀단지

목록 보기
35/41

자바스크립트 의존성 지옥 & 의존성이란?(yceffort): https://yceffort.kr/2020/11/javascript-dependency-hell

package.json

package.json이란?

  • 프로젝트가 의존하고 있는 패키지 목록

  • 시멘틱 버전에 따라 프로젝트가 의존하는 패키지의 특정 버전 구체적 나열

  • 빌드를 언제든 다시 만들 수 있게 해 다른 개발자들이 공유를 쉽게 한다.

    패키지가 다른 패키지에 의존할 수 있기에 하나의 패키지가 엄청난 추가 종속을 가질 수 있다.


    package.json의 종속성 타입

프로젝트가 가질 수 있는 다양한 종속성 타입

  1. dependencies: 프로젝트 코드를 호출하기 위해 필수적으로 의존하고 있는 종속성

  2. devDependencies: 개발단계에 필요한 종속성, prettier같이 코드 포맷팅 등 라이브러리

  3. peerDependencies: 이를 package.json에 설정해두면, 패키지 설치하는 다른 사람들에게 여기 지정된 버전의 종속성이 필요함을 알림

  4. optionalDependencies: 옵션 성격 종속성, 이 종속성은 패키지 설치에 필수적이지는 않다

  5. bundleDependencies: 패키지 번들링에 같이 들어가는 의존성. NPM에 있지 않는 제 3의 라이브러리 혹은 일부 프로젝트 모듈로 퐇마하려는 경우 유용



종속성 크기 확인 & 중복 줄이기

#종속성 용량 내림차순 확인
du -sh ./nodemodules/* | sort -nr | grep '\dM.*'

#중복 종속성 정리 등, 의존성 사이즈 줄이기

npm dedup

npm install, ci

npm install은 종종 package-lock.json을 업데이트 할 수 있다. package-json에 정확히 지정된 버전이 아닌, 시맨틱 버전으로 작성되어 있기 때문에 그러하다. 특정 버전의 패키지가 설치돼있다가, 시간이 흘러 새 버전이 나온다면 package-lock.json은 새 버전을 설치하려 할 것이다.


이를 막기 위해 npm ci를 사용한다. 이는 package.json이 아닌 package-lock.json에 명시된 버전 그 자체로 변경없이 설치를 숳애한다. npm install을 무작정 사용하면 개발단계에선 몰랐던 예기치 않은 에러를 낳을 수 있음.

profile
가용한 시간은 한정적이고, 배울건 넘쳐난다.

0개의 댓글