Node Package Manager
Node.js 프로젝트를 관리하는 필수적인 도구 ( 온라인 저장소 + 커맨드라인 도구)
프로젝트 관리를 위한 다양한 명령어를 제공
$npm init
package.json이라는 파일을 만들어 주고 이 디렉터리는 Node.js 프로젝트가 된다.package.json : 프로젝트 관련 정보들이 저장되는 파일. 이 파일을 직접 수정하거나 npm 명령어를 사용하여 프로젝트 정보를 수정할 있다.
- dependencies - 어플리케이션 코드에 직접적으로 사용되는 모듈이다.
- devDependencies - 어플리케이션 코드에는 사용되지 않지만 테스트/프로세스 재시작/린팅 작업들을 수행할 때 사용되는 모듈이다. (서포트 툴)
$npm install [package-name]
라이브러리 : 특정 기능을 수행하는 코드의 묶음
복잡한 기능을 직접 작성하지 않고, 다른 사람이 구현한 것을 사용하는 방법으로 Node.js 에서는 패키지라고도 부름.
$npm install [package-name] --save-dev
package-lock.json
프로젝트에 의존성을 추가하면 snapshot 형태로 package-lock.json이라는 파일이 생성된다.
사용하고 있는 외부 모듈들의 상세한 스펙들이 저장된다.
프로젝트에 의존성을 추가하면 자동으로 ‘^최신버전’으로 추가가 되는데, 의존성 버전이 갑자기 변경되지 않도록, 설치된 버전을 고정하는 역할을 한다.
의존성 버전 표기법
npm install [package-name]@[version] 으로 패키지 버전을 지정할 수 있다.~1.13.0 - 1.13.x 버전 설치
^1.13.0 - 1.x.x 버전 설치, 가장 왼쪽의 0이 아닌 버전을 고정.
0.13.0 – 0.13.0 버전만 설치
$npm install
$npm install --production
$npm install [package-name] --global
로컬 패키지와 전역 패키지
로컬 패키지 : package.json 에 선언되어 있고, node_modules에 저장된 패키지
전역 패키지 : npm install -g 를 통해 내려받아, 전역 패키지 저장소에 저장된 패키지✔ 전역 패키지도 프로젝트에서 사용할 수 있으나, 프로젝트의 의존성이 package.json 내에 명시적으로 선언되어 있는 것이 프로젝트 관리의 좋은 방향이다.
$npm remove [package-name]
// 실행
$ npm run say-hi
"hi"
// package.json
{
…
"scripts": {
"say-hi": "echo \"hi"\"
},
…
}
| 명령어 | 의미 | 주요 파일/디렉터리 | 의미 |
|---|---|---|---|
| npm init | 프로젝트 생성 | node_modules | 프로젝트 의존성 저장 디렉터리 |
| npm install | 의존성 추가 | package.json | 프로젝트 관리 (버전, 의존성, 스크립트, …) |
| npm remove | 의존성 삭제 | package-lock.json | 의존성 버전 확인 |
| npm run | 스크립트 실행 |
npm 패키지를 설치하지 않고 사용할 수 있게 해주는 도구.
프로젝트에 추가하거나 전역 패키지로 추가하지 않고, npx를 이용하여 바로 실행할 수 있다.
npx를 사용하면 Node.js의 특정 버전을 사용하여 js 파일을 실행할 수 있다.
프로젝트의 Node.js 버전 별 실행환경을 확인할 때 유용하다.
npx를 이용하면 gist 코드를 다운받지 않고 바로 실행 가능하지만 git이 설치되어 있어야 한다. (gist는 github에 등록된 간단한 코드)
온라인상의 코드는 어떤 위험이 있을지 모르기에 코드를 잘 확인하고 실행해야 한다.