2019-02-26 Node교과서 강의 - NPM
NPM
NPM(Node Package Manager)
- Node의 패키지는 대략 60-70만개가 존재한다.
- 모듈 : Node내장모듈
- 패키지 : 남들이 만든 프로그램(모듈)
$npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.
See `npm help json` for definitive documentation on these fields
and exactly what they do.
Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.
Press ^C at any time to quit.
package name: (npmtest) jimmy-npmtest
version: (1.0.0)
description:
entry point: (index.js)
test command:
git repository:
keywords:
author: JimmyKim
license: (ISC) MIT
About to write to /Users/jaeyeonkim/Desktop/nodelecture/online/npmtest/package.json:
{
"name": "jimmy-npmtest",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "JimmyKim",
"license": "MIT"
}
Is this OK? (yes)
- npm init 명령어를 입력하면 내가 만들 패키지에 대한 버전, 이름 등을 지정할 수 있다.
- package name을 입력할때 중복이 되면 안된다.
- 입력을 하게되면 package.json이라는 파일이 생성된다. 이 파일이 해당 패키지에 대한 설명서이다.
- 나의 패키지에 다른사람의 패키지를 설치할수 있다.
$npm install express
- 익스프레스를 설치를 하게되면 package-lock.json파일과 node_modules라는 디렉토리가 생성
- node_modules디렉토리 안에는 express가 사용하는 패키지들이 설치가 된다. 패키지들이 필요한 패키지들이 꼬리에 꼬리를 물고 설치가 된다.
- package-lock.json에는 express가 사용하고 있는것들이 명시되어있다. package-lock.json을 보면 프로젝트의 구조를 대략 확인할 수 있다.
npm install express --save-dev
- 배포환경에서는 안쓰고 개발환경에서만 쓴다는 명령어이다. 개발에 좀 더 도움을 받기 위해서 사용을 하게된다. 배포할 서비스에는 안쓴다.
npm install morgan cookie-parser express-session
npm i morgan cookie-parser express-session
- npm install을 축약해서 npm i로 쓸 수 있다.
- npm –save-dev 역시 축약해서 npm i -D로 쓸 수 있다.
$npm i --global rimraf
- 명령어들을 이용해서 쓸 수 있는 패키지를 사용할때는 global옵션을 붙인다.
- -g로 축약할 수도 있다.
$npm i -g npm
- npm 업데이트할때 사용할 수 있다.
npm버전
//package.json
{
"name": "jimmy-npmtest",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"engine": {
"node": "10.6.0"
},
"author": "JimmyKim",
"license": "MIT",
"dependencies": {
"cookie-parser": "^1.4.4",
"express": "^4.16.4",
"express-session": "^1.15.6",
"morgan": "^1.9.1"
},
"devDependencies": {
"nodemon": "^1.18.10"
}
}
- dependencies는 배포할때 사용하는 패키지이고, devDependencies는 개발할때 사용하는 패키지들이다.
- engine은 해당 패키지가 사용할 node와 npm버전을 적는곳이다.
- major.minor.patch 버전으로 구분이 된다. patch는 버그수정, minor는 신기능추가, major는 대규모변화(고장확률)
- ^(minor,patch업데이트), ~(patch업데이트), X.X.X(X는 모든 숫자를 의미)
npm명령어
- npm outdated : 업데이트 가능한 버전과 패키지들을 가르쳐준다.
- npm update : update할 수 있는 패키지들은 다 업데이트한다.
- npm remove pacakgeName, npm rm packageName : 패키지를 지워준다.
- npm search packageName : 패키지를 탐색한다.
- npm info packageName : 해당 패키지의 package.json들이 나온다.
- npm ls packageName : 내 패키지에서 packageName이 어떤 dependency에 설치되어 있는지 나온다.
Written on February 26, 2019