npm(node package manager)은 Node.js 설치 시 함께 설치되는 자바스크립트 패키지 매니저이다.
Node.js에서 사용할 수 있는 모듈들을 패키지화하여 모아둔 저장소 역할을 하고, 패키지 설치 및 관리를 위한 CLI(Command Line Interface)를 제공한다.
자주 사용하는 npm 명령어에 대해 알아보자.
새로운 프로젝트나 패키지를 만들 때 사용한다.
npm init
을 실행하면 프로젝트의 루트 디렉토리에 package.json 파일이 생성된다.
package.json 파일을 가진 모든 디렉토리를 npm 프로젝트라고 볼 수 있다.
--yes
나 -y
옵션을 주면 기본 설정값으로 생성된다.
npm init
# package.json 기본 설정값 적용
npm init --yes
npm init -y
패키지를 설치한다. npm i
로도 사용이 가능하다.
뒤에 패키지명을 붙이지 않고 npm install
만 실행할 경우 package.json의 모든 패키지를 설치한다.
패키지 이름 뒤에 @<version>
을 붙여주면 특정 버전으로 설치할 수 있다.
npm install <package-name>
npm i <package-name>
# 패키지 여러 개 한 번에 설치
npm i <package-name> <package-name> <package-name>
# package.json의 모든 패키지 설치
npm install
npm i
프로젝트의 루트 디렉토리에 node_modules 디렉토리가 자동 생성되고 그 안에 패키지가 설치된다. 지역 설치된 패키지는 해당 프로젝트 내에서만 사용할 수 있다.
npm install
뒤에 -g
옵션을 붙여주면 패키지가 전역 공간에 설치된다. 전역 설치된 패키지는 모든 프로젝트에서 참조할 수 있다.
전역으로 설치하게 되면 몇 가지 문제들이 발생한다.
# 지역 설치
npm install <package-name>
# 전역 설치
npm install -g <package-name>
npm@5부터 --save
옵션을 기본 옵션(default)으로 저장한다.
--save
옵션은 package.json의 dependencies 항목에 모듈을 추가한다는 의미이다.
프로젝트 배포 시 사용될 의존성 모듈을 정의하고 설치하는 기본 옵션(default).
dependencies에 패키지 등록.
개발 단계에서만 사용하는 의존성 모듈을 정의하고 설치.
devDependencies에 패키지 등록.
선택적 의존성 모듈을 정의하고 설치.
optionalDependencies에 패키지 등록.
패키지의 버전을 version range 형식이 아닌 정확한 버전으로 명시한다.
dependencies에 패키지 등록.
번들로 묶을 패키지 의존성 모듈을 정의하고 설치.
bundleDependencies에 패키지 등록.
dependencies에 패키지를 등록하지 않는다.
패키지를 삭제한다. npm rm으로도 사용이 가능하다.
node_modules와 package.json의 dependencies에서 모두 제거된다.
전역 설치된 패키지는 설치할 때와 동일하게 -g 옵션을 추가하여 제거하면 된다.
# 로컬/개발용 패키지 제거
npm uninstall <package-name>
npm rm <package-name>
# 전역 패키지 제거
npm uninstall -g <package-name>
npm rm -g <package-name>
패키지를 업데이트한다. 전역 설치된 패키지의 경우 동일하게 -g 옵션을 추가해주면 된다.
# 로컬 패키지 업데이트
npm update <package-name>
# 전역 패키지 업데이트
npm update <package-name> -g
npm 저장소에서 패키지를 검색한다.
패키지의 이름, 설명 또는 키워드를 바탕으로 검색 결과가 나온다.
참고로, 공식 홈페이지에서 검색하는 것이 훨씬 간편하다.
npm search <search-term>
npm 저장소에서 패키지를 검색하는 명령어입니다. 패키지의 이름, 설명 또는 키워드를 바탕으로 검색 결과가 나옵니다.
패키지에 대한 정보를 확인할 수 있다.
npm view와 유사하지만 보다 세부적인 정보를 파악할 수 있다.
npm info <package-name>
설치된 패키지들의 구조를 보여준다. npm ls로도 사용 가능하다.
현재 설치된 패키지의 버전과 dependencies를 트리 구조로 표현한다.
npm ls <package-name>
을 실행하면 해당 패키지와 관련된 구조만 보여준다.
npm ll
을 실행하면 더 상세한 정보를 볼 수 있다.
npm list
npm ls
# 특정 패키지 조회
npm list <package-name>
npm ls <package-name>
# 더 상세한 정보 조회
npm ll
지역 패키지가 설치된 node_modules의 위치를 알려준다.
마찬가지로 옵션 -g를 추가하면 전역 패키지가 설치된 위치를 확인할 수 있다.
# 지역 패키지 설치 폴더 확인
npm root
# 전역 패키지 설치 폴더 확인
npm root -g
package.json의 scripts 프로퍼티에 지정해둔 스크립트를 실행한다.
프로젝트에서 반복적으로 실행해야 하는 스크립트를 package.json 파일의 scripts 프로퍼티에 지정해두면 npm run 명령어를 이용해서 간편하게 실행시킬 수 있다.
npm run <script-name>
스크립트 작성 시 아래와 같이 이름과 명령어를 key: value 형태로 입력한다.
{
"scripts": {
"test": "mocha",
}
}
npm run test
package.json 파일의 scripts 프로퍼티 중 start를 실행한다.
start가 미리 정의되어 있지 않으면 npm은 node server.js를 실행한다.
{
"scripts": {
"start": "node test.js"
}
}
npm start
> npm@x.x.x start
> node test.js
(test.js output would be here)
명령어 목록을 보여준다.
npm help <command>
를 실행하면 해당 명령어에 대한 설명 및 옵션 정보를 확인할 수 있다.
npm help
# 특정 명령어 정보 확인
npm help <command>
참고 자료
npm Docs CLI Commands, npm-install
PoimaWeb 모듈화와 npm(node package manager)
Zero Cho npm 명령어