xtring.dev

[NPM] npm install 할 때 --save 옵션을 함께 입력하는 이유? 하지만 이제는 사용하지 않아도 되는 이유. 본문

Front-End/NPM

[NPM] npm install 할 때 --save 옵션을 함께 입력하는 이유? 하지만 이제는 사용하지 않아도 되는 이유.

xtring 2020. 1. 19. 20:04

 

 

  JavaScript 프로젝트를 하게 되면 외부 모듈(라이브러리)을 많이 이용하게 됩니다. 라이브러리를 받기 위해서 npm intstall <module-name>과 같은 명령어를 많이 보셨을거에요. 그런데 --save 옵션을 봤지만 정확한 이유를 몰랐습니다. save? 저장을 도와주는 옵션인가 정도로 예측할 수 있겠죠? 그러나 우리는 알지도 못하고 마음대로 사용해서는 안되잖아요!

 

  먼저, npm(Node Package Manager)프로젝트에 필요한 라이브러리를 다운로드 또는 관리 할 수 있도록 해주는 프로그램입니다. 우리가 일반적으로 npm을 사용하게 되면(npm init 시) package.json 파일을 프로젝트 폴더 바로 아래에서 생성하여 모듈과 해당 모듈의 버전을 관리합니다. 요즘 CLI를 통해서 프로젝트를 생성하게 되면 기본적으로 함께 포함되어 있죠. 또는 그렇지 않은 경우 npm init을 통해 기본 세팅을 할 수 있습니다.

 

 

 

그렇다면, 프로젝트에 npm install에 --save 옵션을 붙이는 이유가 무엇일까요?

$ npm install <module-name> --save

  --save 옵션은 package.json의 dependency 항목에 모듈을 추가한다는 의미입니다.

 

  앞에서 설명했듯이 package.json에서 프로젝트가 사용하는 모듈들의 의존성을 관리할 수 있는 것이죠. 이 관리된 package.json을 통해 다른 곳으로 프로젝트를 이동/공유 할때 node_modules 폴더(보통 몇백 메가 이상)를 함께 옮기지 않아도 됩니다! 왜냐하면 package.json의 dependencies 항목을 보고 npm이 자동으로 프로젝트에 의존된 모듈을 모두 다운로드 해줄 수 있으니까요!

 

  package.josn에 추가되지 않는다는 것은 해당 모듈을 기억하고 관리하지 않겠다는 의미와 같아 만약, node_modules 제거하게 되면 --save하지 않은 라이브러리는 다시 추가하지 않습니다.

 

  하지만 npm5 부터는 --save 옵션을 기본 옵션으로 적용하게 되었습니다. 즉, --save를 사용하지 않아도 dependencies에 항목을 추가됩니다. --save 옵션은 더이상 쓰지 않아도 기본으로 사용되는 기능으로 생략해도 됩니다.

  

 

 

 

  추가적으로 관련된 옵션을 통해 dependency에 어떻게 저장할 것인지 알아봅시다.

(1) -P or --save-prod : package.json의 dependencies에 패키지를 등록합니다.(default)

(2) -D or --save-dev : package.json의 devDepndencies에 패키지를 등록합니다.

(3) -O or --save-optional : package.json의 optionalDependencies에 패키지를 등록합니다.

(4) --no-save : dependencies에 패키지를 등록하지 않습니다.

 

 

반응형
Comments