인터넷상에서 패키지 설치와 관련된 내용을 읽다보면 패키지 설치 코드에서 --save가 들어간 코드를 종종 접하게 된다.
하지만 이는 과거의 흔적이라고 볼 수 있다. 현재의 시점에서 '--save' 플래그는 더 이상 쓰지 않아도 된다.
--save 의 뜻과 기능
--save 옵션을 통해 설치된 패키지는 package.json 파일의 dependencies 목록에 기록된다. 따라서 향후 npm install (혹은 npm i)를 입력하게 되면 해당 패키지가 설치된다.
그렇다면, --save를 입력하지 않으면 어떻게 될까?
$ npm install <package>
이런 경우 해당 패키지는 임시로 설치되고, package.json의 dependencies에는 추가되지 않기 때문에 언제든 node_modules 폴더를 지운 뒤, $ npm i 를 통해 간편하게 이전 패키지 상태로 복구가능하다.
하지만!! 이는 과거 버전의 npm에서의 설명이다.
npm 5.0+ 에서의 기본값 변경
하지만, 최근의 개발환경에 있어서는 어떤 패키지를 임시로 설치하는 경우보다는 dependencies에 추가하여 영구적으로 설치할 일이 더 많은게 사실이다.
그러다보니 npm 5.0+ 버전부터는 --save 플래그를 더 이상 입력하지 않아도, 기본값으로 --save를 입력한 것과 같이 동작하도록 바뀌었다.
따라서 이제는 아래와 같이 입력하면 자동으로 dependencies에 추가된다.
$ npm install <package>
그렇다면 이제 반대로, 임시로 설치하고 싶을땐 어떻게 하면 될까?
바로 --no-save 플래그를 입력해주면 된다.
$ npm install <package> --no-save
정리
npm 버전 | 명령어 | package.json의 dependencies에 추가여부 |
||||
npm 5.0 미만 |
$ npm install <package> | X | ||||
$ npm install <package> --save | O | |||||
npm 5.0 이상 |
$ npm install <package> | O | ||||
$ npm install <package> --no-save | X |
보너스
devDependencies로 추가하고 싶을때는 아래의 플래그를 쓰면 된다.
$ npm install <package> -D
-D 는 --save-dev 와 같은 기능을 한다. 그 외에 아래와 같은 단축 플래그가 존재한다.
- -a: --all
- --enjoy-by: --before
- -c: --call
- --desc: --description
- -f: --force
- -g: --global
- --iwr: --include-workspace-root
- -L: --location
- -d: --loglevel info
- -s: --loglevel silent
- --silent: --loglevel silent
- --ddd: --loglevel silly
- --dd: --loglevel verbose
- --verbose: --loglevel verbose
- -q: --loglevel warn
- --quiet: --loglevel warn
- -l: --long
- -m: --message
- --local: --no-global
- -n: --no-yes
- --no: --no-yes
- -p: --parseable
- --porcelain: --parseable
- -C: --prefix
- --readonly: --read-only
- --reg: --registry
- -S: --save
- -B: --save-bundle
- -D: --save-dev
- -E: --save-exact
- -O: --save-optional
- -P: --save-prod
- -?: --usage
- -h: --usage
- -H: --usage
- --help: --usage
- -v: --version
- -w: --workspace
- --ws: --workspaces
- -y: --yes
또한, 기본 설정값을 보고 싶을때는 아래의 명령어로 확인 가능하다.
$ npm config ls -l
'Learning-Log > Computer Science' 카테고리의 다른 글
[TS] 타입스크립트의 기초(1) - type 키워드 및 Type에 대한 이해 (0) | 2022.07.05 |
---|---|
[TS] 타입스크립트 Generic에 대한 이해와 활용 (0) | 2022.07.01 |
[JS] 자바스크립트의 배열(Array)은 배열이 아니다. (0) | 2022.06.19 |
[VSCode] remote.wsl:connection Method 를 알아보자 (0) | 2022.06.19 |
[WSL] WSL 기본 명령어 (0) | 2022.06.19 |