티스토리 뷰


궁금증의 시작은 리액트에서 SCSS 사용 환경을 구축하려고 하면서 시작됐다.

사실 매번 npm으로 패키지들을 다운 받을 때, 아무생각없이 npm install - 로 다운받곤 했다.

하지만 패키지 사용에 대한 설명들을 보면 제각기 install의 방법이 달랐다.

특히 --save와 --save-dev는 단골이어서 이참에 사용법을 이해하기로 했다.


결론부터 말하면, npm install은 node_modules 내에 패키지를 설치 후 어떠한 dependencies에도 추가되지 않았었다. 때문에 npm install과 npm install --save간에 dependencies에 아무것도 추가되지 않느냐, 추가되느냐에 따른 차이가 있었다.

하지만 npm 5버전 이후부터는 npm install만 적어도 dependencies에 추가가 된다(현재 최신은 6.xx 버전이다). 

`npm install` saves any specified packages into `dependencies` by default.

 

공식문서가 그렇단다.

npm install과 npm install --save의 기능이 같다는 뜻!

 

아래를 보면 --save-prod도 디폴트라고 적혀있다.

아마 그냥 npm install, --save, --save-prod 셋 다 같은 역할을 하는 듯 싶다.

`-P, --save-prod`: Package will appear in your `dependencies`. 
This is the default unless `-D` or `-O` are present.

 

npm install --save-dev(줄여서 -D라고도 한다)는 node_modules에 패키지를 설치 후, devDependencies에 추가된다.

 

여기서 dependencies는 내가 설치하는 입장에서는 설치하려는 패키지가 어떤 패키지들에 필수적으로 의존하고 있는지를 알려준다. dependencies에 있는 항목들은 필수적으로 함께 설치돼야 하는 것이다.

dependencies 예시

devDependencies는 배포 시 굳이 설치할 필요가 없는 개발단계에서만 사용하는 패키지들을 추가한다. 이곳에 추가된 항목들은 --production을 붙여 install 하면 제외되고 dependencies 항목들만 설치가 된다.

devDependencies 예시

참고로 개발용으로 돌리는 항목들은 eslint, webpack이 대표적이다.


참고:

npm 공식 문서

stackoverflow: is-npm-install-the-same-as-npm-install-save?

반응형
댓글