npm ( Node Package Modules )

  • ํ™•์žฅ ๋ชจ๋“ˆ(ํŒจํ‚ค์ง€) ๊ฒ€์ƒ‰
  • ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €
  • http://www.npmjs.org
  • ๋ชจ๋“ˆ ๊ฒ€์ƒ‰
  • ๋ชจ๋“ˆ ์ƒ์„ธ ์ •๋ณด
  • ๋ชจ๋“ˆ ์„ค์น˜ ๋ฐฉ๋ฒ•
  • API ์„ค๋ช…, ์˜ˆ์ œ

Module

  • Module ์„ค์น˜, ์‚ญ์ œ(ํ™•์žฅ ๋ชจ๋“ˆ)
  • Module ๊ฒ€์ƒ‰
  • Module ์ •๋ณด
  • ํŒจํ‚ค์ง€ ์ •๋ณด ์ž‘์„ฑ

์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•

  • Nodejs๋ฅผ ์„ค์น˜ํ–ˆ๋‹ค๋ฉด ๊ฐ™์ด ์„ค์น˜ ๋˜์–ด์žˆ๋‹ค.
  • ํ™•์ธ ๋ช…๋ น์–ด : npm help

์ฃผ์š” ๋ช…๋ น์–ด

  • npm init : ํŒจํ‚ค์ง€ ์ค€๋น„ package.json ์ƒ์„ฑ
  • npm install : ํŒจํ‚ค์ง€์— ํ•„์š”ํ•œ ๋ชจ๋“ˆ ์„ค์น˜
  • npm install package : ๊ฐœ๋ณ„ ํŒจํ‚ค์ง€ ์„ค์น˜
  • npm list : ์„ค์น˜๋œ ๋ชจ๋“ˆ ๋ชฉ๋ก ๋ณด๊ธฐ
  • npm list -g --depth=0 : Global List ํ™•์ธํ•˜๊ธฐ
  • npm info : ๋ชจ๋“ˆ ์ •๋ณด
  • npm search : ๋ชจ๋“ˆ ๊ฒ€์ƒ‰
  • npm update : ๋ชจ๋“ˆ ์—…๋ฐ์ดํŠธ
  • npm uninstall : ๋ชจ๋“ˆ ์‚ญ์ œ

์ „์—ญ์„ค์น˜

  • ํ•œ๋ฒˆ ์„ค์น˜๋กœ ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉ
  • ์œ ํ‹ธ์„ฑ(mocha,nodemon)์€ ์ „์—ญ ์„ค์น˜ ๊ถŒ์žฅ
  • lib/node_modules
  • ๊ด€๋ฆฌ์ž ๊ถŒํ•œ ํ•„์š” -g ์˜ต์…˜
  • sudo npm install -g [Module]
  • sudo npm uninstall -g [Module]

์ง€์—ญ์„ค์น˜

  • ๋Œ€๋ถ€๋ถ„์˜ ๋ชจ๋“ˆ์€ ์ง€์—ญ ๋ชจ๋“ˆ ๊ถŒ์žฅ
  • ํ”„๋กœ์ ํŠธ๋งˆ๋‹ค ์„ค์น˜
  • node_modules

๋ชจ๋“ˆ ์„ค์น˜

  • npm install [Module][@Version]
  • ์˜์กด์„ฑ ์žˆ๋Š” ๋ชจ๋“ˆ๋„ ๊ฐ™์ด ์„ค์น˜ํ•œ๋‹ค.

ํŒจํ‚ค์ง€ ์ •๋ณด

ํŒจํ‚ค์ง€ ์„ค์ • ํŒŒ์ผ

  • npm init์œผ๋กœ ์ƒ์„ฑ
  • ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ์ •๋ณด ์ž…๋ ฅ
  • npm install Module --save : package.json์— ์˜์กด์„ฑ ์ •๋ณด ๊ธฐ๋กํ•˜๊ธฐ
  • npm install Module --save-dev : ์‹ค๋ฌดํ™˜๊ฒฝ์ด ์•„๋‹Œ ๊ฐœ๋ฐœํ•  ๋•Œ๋งŒ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ์•Œ๋ฆฌ๋Š” ์˜ต์…˜
  • package.json
{
  "name": "npm-exercise",
  "version": "1.0.0",
  "description": "npm sample",
  "main": "app.js",
  "dependencies": {
    "async": "^1.5.0",
    "jade": "^1.11.0"
  },
  "devDependencies": {},
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

ํ™•์žฅ ๋ชจ๋“ˆ : nodemon

  • ์†Œ์Šค์ฝ”๋“œ ์ˆ˜์ • ํ›„ ์ž๋™ ์žฌ์‹œ์ž‘. ๋งค์šฐ ํŽธํ•˜๋‹ค.
  • ์„ค์น˜ : ๊ธ€๋กœ๋ฒŒ๋กœ ์„ค์น˜ npm install -g nodemon

  • ์‹คํ–‰๋ฐฉ๋ฒ• : nodemon app.js

๋ชจ๋“ˆ ๋งŒ๋“ค๊ธฐ

  • ์†Œ์Šค ์ฝ”๋“œ ๋ถ„๋ฆฌ
  • ๋ชจ๋“ˆ ์ž‘์„ฑ ๋ฐฉ๋ฒ• : module.exports
  • ๋ชจ๋“ˆ ๋กœ๋”ฉ : require(๊ฒฝ๋กœ)

๋ชจ๋“ˆ ์˜ˆ์ œ

  • greeting.js
module.exports.hello = function() {
	console.log('Hello World');
}
exports.hello = function() {
	//module ์ƒ๋žต ๊ฐ€๋Šฅ
}
  • ํ˜ธ์ถœํ•˜๊ธฐ (exports๋ฅผ ํ•˜์ง€ ์•Š๋Š” ํ•จ์ˆ˜๋Š” ์‚ฌ์šฉ ๋ถˆ๊ฐ€)
var greeting = require('./greeting');
greeting.hello();

ํด๋ž˜์Šค exports

  • ๋‹จ ํ•˜๋‚˜์˜ ํด๋ž˜์Šค exports
  • class
function Exercise() {
}
 
Exercise.prototype.run = function() {
	console.log('run!');
}
module.exports = Exercise; //module ์ƒ๋žต ๋ถˆ๊ฐ€
  • run
var Exercise = require('./exercise.js');
var exercise = new Exercise();
exercise.run();

๊ฐ์ฒด exports

  • ๋‹จ ํ•˜๋‚˜์˜ ๊ฐ์ฒด exports
  • Object
var student = {
  hour : 0,
  study : function(){
    this.hour++;
    console.log(this.hour+'์‹œ๊ฐ„์งธ ๊ณต๋ถ€ ์ค‘');
  }
};
module.exports = student; //module ์ƒ๋žต ๋ถˆ๊ฐ€
  • run
var student = require('./student.js');
student.study();