NPM(Node Package Manager)

Posted by Jungwoon Blog on August 1, 2017

NPM(Node Package Manager)란?

NPM의 주요 기능

  • NPM Search에서 탐색 가능한 Node.js의 패키지 / 모듈 저장소
  • Node.js 패키지 설치, 버전 및 호환성 관리할 수 있는 유틸리티

NPM 설치 확인방법

$ npm --version

4.5.0


   ╭─────────────────────────────────────╮
   │                                     │
   │   Update available 4.5.0 → 5.3.0    │
   │     Run npm i -g npm to update      │
   │                                     │
   ╰─────────────────────────────────────╯

구버전의 NPM 새로운 버전으로 업데이트 방법

$ npm install npm -g # -g 옵션을 사용하면 컴퓨터에 저장이 됨
$ npm --version
5.3.0

package.json

npm은 프로젝트에 대한 설정을 package.json 이라는 파일에 의존하고 있고 이 파일에 JSON 형식으로 작성하여 프로젝트를 관리할 수 있습니다.

{
  "name": "node.js",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "body-parser": "^1.17.2",
    "ejs": "^2.5.6",
    "express": "^4.15.3",
    "mysql": "^2.13.0",
    "nodemon": "^1.11.0",
    "path": "^0.12.7"
  },
  "devDependencies": {
    "connect-flash": "^0.1.1",
    "express-session": "^1.15.4",
    "passport": "^0.3.2",
    "passport-local": "^1.0.0"
  },
  "description": ""
}

디렉토리 초기화 방법

$ npm init # 다음 명령어로 프로젝트에 npm 관련 부분을 초기화 할 수 있다
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: (nodeproject) 
version: (1.0.0) 
description: 
entry point: (index.js) 
test command: 
git repository: 
keywords: 
author: 
license: (ISC) 
About to write to /Users/jungwoon/NodeProject/package.json:

{
"name": "nodeproject",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
  "test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}


Is this ok? (yes)

모듈 설치 방법

$ npm install express

로컬 설치 (옵션 X or –save or –save-dev)

일반적으로 npm이 모듈을 설치할때는 로컬 설치를 합니다, 로컬 설치란 Node.js를 이용해 작업중인 디렉토리 내에서만 사용할 수 있도록, 설치하는 것을 의미합니다.

기본 설치 방법
$ npm install express # 로컬 설치
–save 설치 방법

: 나중에 npm install 명령어를 이용하여 프로젝트에 의존성과 관련된 모듈들을 자동으로 설치할 수 있습니다.

$ npm install express --save # package.json의 dependencies 항목에 포함됩니다.
{
  "name": "node.js",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "body-parser": "^1.17.2",
    "ejs": "^2.5.6",
    "express": "^4.15.3",
    "mysql": "^2.13.0",
    "nodemon": "^1.11.0",
    "path": "^0.12.7"
  },
  "devDependencies": {
    "connect-flash": "^0.1.1",
    "express-session": "^1.15.4",
    "passport": "^0.3.2",
    "passport-local": "^1.0.0"
  },
  "description": ""
}

–save-dev 설치 방법
$ npm install express --save-dev # package.json의 devDependencies 항목에 포함됩니다.
{
  "name": "node.js",
  "version": "1.0.0",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "body-parser": "^1.17.2",
    "ejs": "^2.5.6",
    "express": "^4.15.3",
    "mysql": "^2.13.0",
    "nodemon": "^1.11.0",
    "path": "^0.12.7"
  },
  "devDependencies": {
    "connect-flash": "^0.1.1",
    "express-session": "^1.15.4",
    "passport": "^0.3.2",
    "passport-local": "^1.0.0"
  },
  "description": ""
}

글로벌 설치 (옵션 -g)

모듈 설치시에 -g 옵션을 주면 시스템에 해당 모듈을 설치하게 됩니다, 작업중인 디렉토리 외에도 해당 모듈을 사용할 수 있게 됩니다

$ npm install express -g

모듈 업데이트 방법

$ npm update express

모듈 검색 방법

$ npm search express

모듈 제거 방법

$ npm delete express

중복 모듈 정리

$ npm dedupe

기본 사용법

var express = require('express');

Example

var express = require('express'); // express 모듈 사용하기 위함
var app = express(); // express 모듈을 app이라는 변수명으로 사용
var bodyParser = require('body-parser'); // body-parser를 bodyParser란 변수로 사용
var router = require('./router/index');
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
var session = require('express-session');
var flash = require('connect-flash');


app.listen(3000, function() {
    console.log("start!! express server port on 3000!!");
});

app.use(express.static('public'));
app.use(bodyParser.json()); // Json Parser
app.use(bodyParser.urlencoded({ extended:true }));
app.set('view engine', 'ejs');
app.use(session({
    secret: 'keyboard cat',
    resave: false,
    saveUninitialized: true
}));

app.use(passport.initialize());
app.use(passport.session());
app.use(flash());
app.use(router);