[Node.js] npm 소개와 설치 및 사용법
(글쓴날 : 2020.02.10)
* 이 글은 Node.js를 처음 입문하시는 분들을 위한 글입니다.
* Node.js의 또 다른 패키지 매니저인 Yarn에 대해서는 다루지 않습니다.
1. npm이란 무엇인가?
1) 패키지 매니저
npm은 Node package manager의 약자로, 말 그대로 Node.js 개발자들이 패키지(모듈)의 설치 및 관리를 쉽게 하기 위해 도와주는 매니저(관리 도구)입니다.
* 패키지(모듈) : 프로그램의 구성요소 중 특정 기능을 수행할 수 있는 코드의 집합(라이브러리).
유명한 플랫폼(프로그래밍 언어, OS 등)은 저마다의 패키지 매니저를 가지고 있는데,
다른 유명 패키지 매니저로는
- Python의 pip
- Java의 Maven, Gradle(Android, React Native에서 많이 봤는데??? 그거 맞습니다.^^)
- PHP의 Composer
- Ruby의 RubyGems
등이 있고,
Linux환경에 익숙하신 분들은
- 레드햇 계열의 rpm, yum
- 데비안 계열의 dpkg, apt
- 맥 OS의 Homebrew
등이 있습니다.
요새 들어 Node.js의 인기가 전 세계적으로 급부상함에 따라 Node.js의 패키지 매니저인 npm 또한 세계 최대의 패키지 매니저로 성장하게 되었습니다.
패키지 매니저가 성장했다는 것은 해당 플랫폼 관련 개발자(사용자)가 많아졌을 뿐만 아니라 현업에서의 수요 또한 많아졌다는 뜻이기도 합니다!
2) 패키지 매니저 사용 이유
자, 그렇다면 이러한 패키지 매니저를 도대체 왜 사용할까요???
여러 가지 이유가 있지만 제가 패키지 매니저를 직접 사용하면서 느낀 점으로는,
(1) 프로그램을 제작 시 어떤 기능을 구현할 때 자신이 직접 프로그래밍을 하지 않아도 동일한 기능의 남이 만들어놓은 코드를 쉽게 사용이 가능하다.
(2) 코드의 재사용성이 높아지고 유지 보수가 쉬워질뿐더러 형상관리가 용이해진다.
이 두 가지 이유가 가장 크지 않을까 싶습니다!
프로그래밍을 아예 처음 접하신 분이시라면 2번째 이유가 조금 공감이 안 가실 수도 있는데 왜 그런지는 곧 아래에서 차차 설명해드리도록 하겠습니다.
2. npm 설치 및 사용법
1) npm 설치
만약 이 글을 보고 계시다면 99.99999%의 확률로 npm 설치를 하실 필요가 없으실 겁니다.
왜냐하면 Node.js를 설치할 때 자동으로 npm이 함께 설치되기 때문이죠!
(이제 npm이 없는 Node.js는 뭐랄까.. 마치 팥 없는 붕어빵 같은 느낌이랄까요...)
* 혹시 그럴리는 없겠지만 Node.js 설치 없이 npm만 설치하시고 싶으신 분이 계실까 봐 준비했습니다.
curl -L https://npmjs.com/install.sh | sh
2) npm 사용법
(사용 빈도가 높은 필수 명령어들 위주로 설명하겠습니다.)
(1) npm -version
제일 기본이자 어떤 프로그램이던지 설치 후 항상 설치가 잘 되었나 확인하기 위해 사용하는 버전 확인 명령입니다.
(2) npm init
Node.js 프로젝트를 시작할때 package.json을 생성해 주는 명령입니다.
* package.json : 프로젝트의 정보와 특히 프로젝트가 의존하고 있는(설치한) 패키지(모듈)에 대한 정보가 저장되어 있는 파일.
* 기본 프로젝트 package.json 예제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
{
"name": "example",
"version": "1.0.0",
"description": "example",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "example"
},
"keywords": [
"example"
],
"author": "minchan",
"license": "MIT"
}
|
* React Native 프로젝트 package.json 예제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
{
"name": "example",
"version": "0.0.1",
"private": true,
"scripts": {
"android": "react-native run-android",
"ios": "react-native run-ios",
"start": "react-native start",
"test": "jest",
"lint": "eslint ."
},
"dependencies": {
"@react-native-community/masked-view": "0.1.6",
"@react-navigation/bottom-tabs": "5.0.0",
"@react-navigation/drawer": "5.0.0",
"@react-navigation/native": "5.0.0",
"@react-navigation/stack": "5.0.0",
"react": "16.9.0",
"react-native": "0.61.5",
"react-native-gesture-handler": "1.5.6",
"react-native-reanimated": "1.7.0",
"react-native-safe-area-context": "0.7.0",
"react-native-screens": "2.0.0-beta.2"
},
"devDependencies": {
"@babel/core": "7.8.4",
"@babel/runtime": "7.8.4",
"@react-native-community/eslint-config": "0.0.7",
"@types/react": "16.9.19",
"@types/react-native": "0.61.10",
"babel-jest": "25.1.0",
"eslint": "6.8.0",
"jest": "25.1.0",
"metro-react-native-babel-preset": "0.58.0",
"react-test-renderer": "16.9.0",
"typescript": "3.7.5"
},
"jest": {
"preset": "react-native"
}
}
|
이렇게 package.json에 프로젝트에 대한 정보, npm과 연결하여 사용할 명령("scripts"객체), 프로젝트가 의존하고 있는(설치한) 패키지(모듈)에 대한 정보("dependencies"객체), 프로젝트의 개발과 관련된 테스트, 컴파일, 코드 작성 형태와 같은 패키지(모듈)에 대한 정보("devDependencies"객체) 등이 저장되어 있는 것을 확인하실 수 있습니다.
(3) npm install 패키지명(npm i 패키지명)
npm의 존재 유무인 본격적으로 필요한 패키지를 설치하는 명령입니다.
(설치한 패키지는 프로젝트의 node_modules 폴더에 저장됩니다.)
에이 이 정도야 뭐.. 기본이지라고 하지만 사실상 제일 핵심이자 중요한 명령입니다.
* 옵션
-g : 패키지가 해당 프로젝트(local)가 아닌 시스템 레벨에 전역(global) 설치되어 다른 Node.js 프로젝트에서도 사용할 수 있게 됩니다.
--save(-S) : package.json의 "dependencies"객체에 추가됩니다. (npm5부터 default로 설정되어 더 이상 사용하지 않습니다.)
-–save-dev(-D) : package.json의 "devDependencies"객체에 추가됩니다.
@패키지 버전 : 패키지명 뒤에 @패키지 버전을 쓰시면 해당 버전의 패키지가 설치되며 입력하지 않을 시 최신 버전으로 설치가 됩니다.
* npm install(npm i) 사용요령 (위에서 말씀드린 패키지 매니저를 사용하는 2번째 이유입니다.)
만약 패키지명을 입력하지 않고 npm install(npm i)만 입력할 시 package.json의 "dependencies"객체에 명시되어 있는 패키지(모듈)들을 모두 설치하게 됩니다.
따라서 프로젝트의 형상관리를 위해 GitHub와 같은 저장소에 업로드할 때, 무겁고 수많은 패키지(모듈)들을 전부 업로드하는 것이 아니라, package.json만 업로드해놓으시면 나중에 프로젝트를 내려받았을 때 npm i 명령어를 통해서 기존 프로젝트에서 사용하던 패키지(모듈)들을 손쉽게 원상복귀시키실 수 있습니다!
(.gitignore파일에 node_modules를 추가하여 패키지(모듈)들이 commit되지 않게 설정해두세요.)
(4) npm uninstall 패키지명
패키지를 설치하는 법을 아셨다면, 삭제하는 법도 아셔야겠죠?
npm uninstall 명령 뒤에 삭제하실 패키지명을 입력하시면 설치된 패키지가 node_modules폴더에서 삭제될 뿐만 아니라 package.json의 "dependencies"객체에서도 삭제됩니다.
(단, 설치하실 때 옵션을 사용하셨다면 삭제하실 때도 같은 옵션을 넣어주세요.)
(5) npm update 패키지명
설치된 패키지를 최신 버전으로 업데이트합니다.
(의존성이 엮여있는 패키지를 함부로 업데이트하면 잘 돌아가던 프로젝트가 갑자기 에러의 굴레에 휘말릴 수 있으니 기존의 버전을 기억해두시거나 신중하게 업데이트하셔야 합니다.)
(6) npm cache clean + npm rebuild
마지막으로 소개해 드릴 명령은 특이하게도 두 가지 명령의 조합인데요. 차례로 명령해주시면 됩니다.
npm cache clean 명령은 npm의 cache를 지우는 명령이고 npm rebuild 명령은 npm을 새롭게 재설치 하는 명령입니다. 주로 npm 명령어가 안 먹히거나 기타 잡다한 버그가 생겼을 시 해결하기 위한 조치 방법으로 쓰이니, 꼭 기억해 두셨다가 npm에 문제가 발생했을 때 사용해보시면 좋을 것 같습니다!
여기까지 Node.js의 패키지 매니저인 npm의 소개와 설치 및 사용법에 대해 알아보았습니다.
위에서 소개해드린 명령어들은 제일 자주 쓰이는 기본 명령어들로 꼭 알아두셔야 합니다.
또한 위의 기본 명령어들 이외에도 여러 다른 기능을 하는 명령어들이 있으므로, 더 알아보시고 싶으신 분들이 계시거나, 현재 만들어진 유용한 패키지들이 어떤 것들이 있는지 궁금하신 분들이 계시다면...
* npm 공식 홈페이지 : npm 공식 홈페이지
위의 npm 공식 홈페이지를 참조하시면 되겠습니다.
감사합니다!
'Deprecated' 카테고리의 다른 글
[Go] Go 언어 소개와 설치 및 컴파일 방법 (4) | 2020.02.12 |
---|---|
[Node.js] PM2 소개와 설치 및 사용법 (0) | 2020.02.11 |
[Node.js] 무료 SSL 인증서 적용 및 HTTPS 서버 구축 방법 (0) | 2020.02.09 |
[React Native] React Navigation 설치 및 사용법 (12) | 2020.02.07 |
블로그 첫 시작 첫 글 (2) | 2020.02.07 |