NPM 은 Node Package Manager의 약자이다. 자바스크립트로 무언가를 개발할 때 필요한 모듈들을 쉽게 다운로드할 수 있게 해주는 도구이다.
버전 확인
node js를 설치하면 npm이 같이 설치된다. node js의 경우 https://nodejs.org/ko/download 에서 설치 가능하다.
설치 후 설치된 버전을 확인하고 싶은 경우 다음과 같은 구문을 이용한다
// 노드js 버전 확인
% node -v
// npm 버전 확인
% npm -v
위의 두 구문을 터미널을 통해 확인할 수 있다.
npm 라이브러리 공유 사이트
npm을 통해 다운로드할 수 있는 라이브러리들을 공유해 둔 사이트가 있다. 바로 https://www.npmjs.com/이다.
위에서 npm install을 통해 다운로드한 dayjs를 검색해 본 결과이다. 해당 라이브러리에 대한 정보들을 확인할 수 있다.
npm으로 dayjs 설치하기
% npm install dayjs
터미널 창에 위와 같은 구문을 작성하면 dayjs 모듈이 다운로드된다.
그 결과로 node_modules 폴더와 그 하위에 dayjs 폴더가 생기며 그에 대한 파일들이 자동적으로 추가된다. 또한 package-lock.json 파일이 추가되며 package.json 파일에는 "dependencies" 속성으로 "dayjs"가 추가되는 것을 확인할 수 있다.
dayjs 사용하기
// index.js
const dayjs = require('dayjs')
console.log(dayjs().format('YYYY-MM-DD'));
require을 사용하여 dayjs를 불러오면 node_module를 확인하여 다운로드한 라이브러리 중 dayjs를 가지고 온다.
package.json 이란
package.json에는 프로젝트에 대한 정보가 들어있다. 또한 dependency 속성을 활용하면 프로젝트에 의존되어 있는 라이브러리를 관리할 수 있다. 해당 파일은 직접 작성하는 방법도 있고, 'npm init'이라는 명령어를 통해서 자동적으로 생성할 수도 있다.
% npm init
위의 명령어를 작성하면 프로젝트의 정보를 작성할 수 있는 명령어들이 순차적으로 출력된다.
해당 명령어들을 통해 프로젝트 정보를 작성하고 나면 package.json 파일이 생성된 것을 볼 수 있다.
속성 중 name의 경우 프로젝트의 이름이며 가장 중요한 속성으로 필수항목이다. version의 경우 프로젝트의 버전을 나타내며 주로 1.0.0 등의 3단계 버전을 사용한다. 이 또한 필수항목이다. description은 프로젝트의 설명을 나타내는 속성이며 keywords는 프로젝트 검색 시 참조되는 키워드이다. private의 경우 소스를 공유할 것이냐 말 것이냐를 결정할 수 있는 속성이다. true로 값을 지정할 경우 게시를 거부하게 된다. main 속성은 프로젝트의 기본 진입점이다. author의 경우 프로젝트를 제작한 사람의 이름을 지정한다. license의 경우 패키지에 대한 라이선스를 지정한다. 이를 통해 해당 패키지를 사용할 수 있는 방법 및 제한사항을 알려준다.
scripts의 경우 자주 사용하는 명령어를 적어두고 npm 명령어로 실행할 수 있도록 해준다.
// package.json
"scripts": {
"start": "echo hello world hello world hello world",
"test": "echo \"Error: no test specified\" && exit 1"
},
// 터미널
% npm run start
hello world hello world hello world라는 구문을 출력하는 'start'라는 명령어를 scripts 속성에 추가하고 터미널을 통해 npm run start 명령어를 실행해 보면 터미널에 hello world hello world hello world라는 구문이 출력되는 것을 확인할 수 있다.
dependencies의 경우 프로젝트에서 사용하는 모듈을 기술하는 부분이다. devDependencies는 개발할 때만 사용하는 모듈을 기술한다. 따라서 개발 시에만 필요한 모듈의 경우 devDependencies에, 운영 시에도 필요한 모듈의 경우 dependencies 속성에 기술하면 된다.
// dependencies 속성 사용
% npm install moment
// devDependencies 속성 사용
$ npm install --save-dev nodemon
node_modules 폴더
node_module 폴더의 경우 다운로드한 라이브러리가 설치되는 경로이다. 해당 폴더의 경우 github 와 같은 곳에 공유를 할 때 제외하고 올려도 상관없다. package.json파일을 가지고 있는 상태에서 터미널에서 npm install 명령어를 실행할 경우 해당 프로젝트에 필요한 모든 라이브러리들이 다운로드되기 때문이다. package.json 파일을 참고하여 dependencies와 devDependencies 등의 의존 라이브러리들이 다운로드 된다. 만약 의존하는 라이브러리 정보가 꼬이는 등의 문제가 발생할 경우 package-lock.json 파일을 삭제하고 npm install 명령어를 실행해도 상관없다.
package-lock.json
package-lock.json의 경우 다운로드한 라이브러리들에서 필요로하는 라이브러리들을 기록한 곳으로 이 파일을 참고하여 node_modules 폴더에 모듈들이 다운로드 된다.
댓글