Programming

[npm] 명령어와 옵션 (package.json이 뭐야?)

남남이루 2023. 5. 9. 23:25

포스팅 동기

: npm은 node package manager 인 건 알겠으나, 언제 패키지를 설치하고, 또 언제 초기화해야 하는 지 잘 몰랐다. 따라서 의존성 문제로 에러가 나면 기계적으로 npm init, npm i, -g 옵션 붙였다 뗐다를 했었다.
이 김에 정리해보자.

npm 명령어 사용 위치

보통 프로젝트 단위(어플리케이션 단위)에서 써왔다. 아마 실무에서는 멀티레포지토리를 쓰는 경우 의존성을 다르게 관리할 것이므로, 레포 범위에서 사용할 것이다. (node_modules를 폴더로 가지고 있는 레포의 최상위 경로)

 

패키지 관련 명령어

• npm init

npm init 명령어는 보통 npm을 처음 프로젝트를 만들거나 패키지를 만들 때 사용한다. 프로젝트 폴더 최상단에 package.json을 만들게 된다.

• npm i

npm i, npm install 은 패키지를 설치하는 명령어이다. 패키지명을 명시할 경우, npm으로 설치할 수 있는 특정 패키지를 설치할 수 있다. 패키지명 없이 실행하면, package.json에 명시된 의존성에 따라 패키지를 일괄적으로 설치한다.
예를 들어 CRA로 만든 내 어플리케이션에서 react-router-dom을 import 했는데, 패키지가 없다고 뜨면 npm i react-router-dom 이런 식으로 패키지를 설치한 후 import로 사용할 수 있게 된다.

• npm i -g, -D

npm i {패키지명} -g 에서 -g옵션이 global을 뜻하는데, 이 때 글로벌의 범위는 내 로컬 환경(시스템 환경, 프로젝트 외부)를 의미하고, 다른 프로젝트에서도 해당 패키지를 사용할 수 있게 된다.
--save-dev 혹은 -D 옵션은 decDependencies에 패키지가 추가된다.

의존성에 추가한다는 말은, 해당 프로젝트의 의존성 내역은 package.json으로 관리하게 되는데, 후에 package.json에 적힌 대로 설치하거나 세팅하게 될 때

--save 혹은 -S (npm5에서는 default 옵션임)

• npm ci

package-lock.json을 기반으로 설치하는 명령어, 설치할 때마다 패키지의 세부버전이 달라지는 npm의 단점을 보완해줄 수 있다. npm i의 엄격한 버전의 명령어라고 생각하면 되고, 배포 시 유용하다. << 처음 알게 됨

• npm dedupe

npm dedupe  npm의 중복 패키지를 정리할 때 사용

• npm ls

npm ls npm에 설치된 패키지 목록을 조회하는 명령어다. npm ls {패키지명} 으로도 사용할 수 있다.
npm ll은 설치된 패키지의 상세 정보 조회~

 


실행 관련 명령어

npm start

npm start, npm test, npm run 등은 package.json의 scripts에서 재정의 및 수정할 수 있는 명령어다.
기본 세팅을 따르게 되면, npm start 는 node server.js가 실행된다. npm test는 test명령어를 실행하고, run은 build 명령어가 있을 때 npm run build 이런 식으로 사용하게 된다.