NPM에 대해서 알아보도록 하겠습니다.
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);