npm & package.json

조건호·2024년 4월 25일

npm

  • 자바스크립트 프로그래밍 언어를 위한 패키지 매니저
  • 자바스크립트 런타임 환경 Node.js의 기본 패키지 매니저
  • 외부 모듈을 내 프로젝트에 설치할 수 있게 해주는 패키지 매니저
  • 저장소에 "외부 모듈"을 설치를 우리가 원하는 프로젝트에 자동으로 해준다.(내 컴퓨터 전역에서 쓰고 싶으면 옵션 -g를 넣으면 된다)

npm으로 라이브러리를 설치하게 되면 package.json에 변화가 생긴다.

dependecies

  • 내가 사용할 라이브러리
  • 외부 모듈을 가져온 리스트들

npm install --save옵션

공식 문서를 보면 npm install ${라이브러리 이름} --save를 볼 수 있는데 --save를 왜 쓸까?

기존에는 npm 명령어를 사용해도 dependencies 필드에 패키지가 자동으로 추가 되지 않았다. 그렇기 때문에 --save 옵션을 사용했어야 했다. 즉 --savedependencies 필드에 패키지를 추가하도록 하는 옵션이다.
하지만 npm5 버전 이후에는 --save 옵션이 기본적으로 적용되기 때문에 굳이 적어줄 필요가 없다.

npm install ${라이브러리} --save-dev는?

package.json에는 dependenciesdevDependencies 필드이 있다. 결론 먼저 말하자면 --save-dev를 붙이게 되면 devDependencies에 들어가게 되며 개발 목적에서만 모듈이 돌아간다. 배포 상태에서도 해당 모듈을 쓰고 싶으면 --save-dev를 빼야 한다.

  • -D 옵션도 볼 수 있는데 이 옵션이 --save-dev와 같다.

그럼 왜 둘을 구분할까?

node_modules가 너무 용량이 커서 배포할때는 필요 없는 라이브러리를 지우고 작업하기 위해서이다.


버전 오류가 날 때

협업을 하게 될 때 혹은 초기세팅을 하고 클론을 받게 되면 npm이 실행되지 않을 경우가 있다. 이때는 여러가지 이유가 있는데 package.jsonpackage.lock.json 이 충돌날 때 실행되지 않는다.
이럴 때는 node_modules, package.lock.json를 지우고 다시 npm install를 해주면 된다.

node_modules는 그냥 지워지지 않기 때문에 -f(force) 옵션을 붙여 rm -rf 로 지워야 한다. 강제로 지우는 것이기 때문에 현재 경로를 정확히 보고 지워야 한다.

  • 현재 위치가 최상위 경로 aiboard-next이기 때문에 여기서 지워주어야 한다.

  • 현재 위치를 pwd로 확인해주고 그래도 불안하다면 ls로 지금 현재 위치에 있는 폴더와 위 그림 좌측에 있는 폴더들이 같은지 확인해준다.

rm -rf로 지워주면 node_moduleslock파일이 지워진 것을 볼 수 있고 다시 npm install를 해주면 package.json를 읽고 다시 설치가 된다.

profile
주니어 프론트엔드 개발자입니다.

0개의 댓글