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