Eyes on the Stars
NPM에 대해 알아보자 본문
건축물을 만드는 재료로서 블럭들을 사용하는데요,
프로젝트에 대한 재료도 작은 단위를 사용할 수 있습니다.
오늘은 Node.js 개발의 작은 블럭들을 관리해주는
NPM 에 대해서 알아보겠습니다.
- package manager for JavaScript and the world's largest software registry.
Discover packages of reusable code - and assemble them in powerful new ways -
NPM은 Node Package Manager의 약자로,
Node.js의 개발에 필요한 여러 Package들을 관리해주는 것입니다.
NPM은 Node.js를 설치할 때 기본적으로 같이 설치되며,
그 버전은 다음 명령을 통해 최신 버전으로 올릴 수 있습니다.
npm install -g npm
NPM에는 현재 600,000 여개의 package들이 올라와있으며,
매주 30억회 정도의 다운로드가 진행될 정도로 거대한 보관소입니다.
필요한 모듈을 찾는 과정에서는 NPM 웹페이지를 이용하면 됩니다.
docs.npmjs.com에서는 QR Code를 다루는 모듈을 찾는 예시를 보여주고 있습니다.
Finding and Selecting Packages
위 글에 따르면 각각의 package들은 npms analyzer에 의해 순위가 매겨지는데,
그 기준은 Optimal, Popularity, Quality, Maintenance 등입니다.
해당 모듈이 사용되어온 횟수도 함께 볼 수 있으므로
모듈을 사용하는 경우에 확인이 필요합니다.
(더이상 관리되지 않는 모듈의 경우 설치해선 안되겠죠!)
앞으로 자주 만나볼 package인 express를 찾아봅시다.
2018년 4월 13일 기준 express 모듈은 버전이 4.16.3이며,
근 7일간 4,622,954회 다운로드 되었다는 것을 알 수 있습니다.
express 내에 포함된 모듈이 30여개이며,
express를 포함하는 모듈이 24,032개라는 것으로부터
그 위치를 알 수 있을 것입니다.
본 페이지에서 알려주는 것처럼 설치는
npm install express
을 통해 진행할 수 있습니다.
그럼 실제로 사용은 어떻게 하는지 알아봅시다!
먼저 프로젝트 폴더를 하나 생성하도록 합시다.
저는 예시로 npmex라는 폴더를 만들어보았습니다.
그리고 본 폴더에서 명령창을 엽니다.
(windows 기준으로 shift키를 누른채 폴더 내부를 오른쪽 클릭하면
'여기서 명령창 열기' 또는 '여기서 PowerShell 창 열기' 등의 버튼이 보입니다.)
NPM을 사용하기 위해서 먼저 초기화 과정을 진행합니다.
npm init
본 명령어를 실행하면
엔터를 누름에 따라서 위와 같은 화면을 볼 수 있습니다.
괄호 내부의 내용은 자동으로 입력된 값을 보여주는 것이며,
해당 줄에 다른 값을 입력하고 엔터를 누를 경우 값을 바꿀 수 있습니다.
하나의 예시로 entry point: (index.js)에 app.js를 입력할 경우
아래에 생성되는 파일의 "main": "index.js" 부분은
"main": "app.js"로 변경됩니다.
마지막에서 yes를 입력해주면(변경하지 않고 엔터를 누르면)
npmex 폴더 내에 package.json 파일이 생성되어 있습니다.
생성된 파일의 내용은 당연하게도 위 사진의 아래와 일치합니다.
이제 npm을 사용하면서 이 파일이 어떤 역할을 하는지 알아봅시다.
프로젝트를 진행할 때 우리는 여러 모듈(package)을 사용할 수 있습니다.
예를 들어 위에서 살펴본 express라는 모듈을
본 프로젝트에서 사용하게 해봅시다.
npm install express --save
위에서 보여준 명령어에 --save 옵션을 붙였습니다.
본 명령을 실행한 후의 폴더에는
./node_modules
./package.json
./package-lock.json
과 같이 폴더와 파일이 존재함을 알 수 있습니다.
package-lock.json 파일은 천천히 살펴보도록 하고,
package.json 파일의 변경점을 찾아보면
다음이 추가되었음을 알 수 있습니다.
"dependencies": {
"express": "^4.16.3"
}
또 다른 모듈을 설치하면 여러줄에 걸쳐서 정보가 나열됩니다.
버전의 숫자 앞에 붙는 기호는 ^, ~ 등이 있는데,
어떤 버전을 설치할지에 대한 내용입니다.
보다 자세한 내용은 https://docs.npmjs.com을 참고하세요.
해당 버전보다 높게, 낮게, 특정 범위, 비슷한 버전 등 여러 경우를 설정할 수 있습니다.
버전 정보 등은 package.json 파일에 저장되지만,
실제로 모듈이 설치되는 폴더는 ./node_modules 입니다.
모듈을 설치한 후 살펴보시면
이미 수많은 폴더가 포함되어 있음을 알 수 있는데요,
그 속에 express도 포함되어 있을 것입니다.
필요한 모듈들을 npm이 자동으로 들고와서 설치해준 것이며,
코드 속에서 앞선 글에서 살펴본 것과 같은
http=require("http")
코드를
express=require("express")
와 같은 형태로 바꾸어 사용할 수 있습니다.
모듈의 사용방법은 각 모듈별로 다르며,
주요 모듈의 사용법은 차차 알아볼게요!
자, 그래서 package.json 파일이 왜 중요할까요????
어짜피 모듈은 node_modules 폴더에 설치되는데??
package.json 파일이 중요한 이유 중 하나는
팀 프로젝트 등에서 서로의 개발환경을
일치시키기에 좋다는 점 입니다.
node_modules 폴더에는 모듈에 대한 파일이 정말 많이 들어가는데,
그 정보는 설치된 컴퓨터의 운영체제나 설치 위치 등에 따라 달라집니다.
즉, node_modules 내부의 정보가 설치장소에 따라 달라질 수 있는데,
다시 모듈을 설치하기 위한 정보를 보관하는 용도로 사용할 수 있습니다.
모듈의 업데이트를 위해서는
그대로 npm install 명령을 실행시켜도 괜찮고,
node_modules 폴더를 삭제한 후 npm install 명령을 실행시켜도 좋습니다.
경우에 따라선 후자를 선택해야할 수도 있어요.
다음 글부터는 Express와 같이
자주 사용하는 모듈들을
하나씩 살펴보겠습니다.
'서버 개발 이야기 > Node.js' 카테고리의 다른 글
Node.js 첫 예제 따라하기 (0) | 2018.04.03 |
---|---|
Node.js 설치 (0) | 2018.03.30 |
Node.js 소개 (0) | 2018.03.30 |