2017년 10월 25일 수요일

Chapter5. npm을 이용한 모듈 관리



학습목표


  1. npm을 이용한 모듈 관리 방법을 이해할 수 있습니다.
  2. 패키지 정보에 대해 알 수 있습니다.
  3. 확장 모듈 설치에 대해 이해할 수 있습니다.
  4. 커스텀 모듈을 만들 수 있습니다.

1. npm


◎ npm

  • 홈페이지 : https://www.npmjs.org/
◎ js 패키지 포털
  • 확장 모듈(패키지) 검색
◎ 패키지 매니저

◎ npm 사이트
  • 모듈 검색
  • 모듈 상세 정보
  • 모듈 설치 방법
  • API 설명, 예제
◎ 모듈
▷ 패키지 매니저 : npm
  • 모듈 설치, 삭제(확장 모듈)
  • 모듈 검색
  • 모듈 정보
  • 패키지 정보 작성
◎ 콘솔 명령 : npm
◎ npm 주요 옵션
  • init : 패키지 준비, package.json 생성
  • install : 패키지에 필요한 모듈 설치
  • install [PACKAGE] : 개별 패키지 설치
  • list : 설치된 모듈 목록 보기
  • info : 모듈 정보
  • search : 모듈 검색
  • update : 모듈 업데이트
  • uninstall : 모듈 삭제
◎ 모듈 설치
▷ 전역 설치
  • 한번 설치로 모든 프로젝트에서 사용
  • 라이브러리 폴더(lib/node_modules)
  • 관리자 권한 필요, -g 옵션
▷ 지역 설치
  • 프로젝트마다 설치
  • 현재 폴더 내 node_modules 폴더
▷ 모듈 전역 설치

  • npm install [Module][@Version]
▷ 모듈 지역 설치 예
$npm install async
$npm install jade@1.0.0
  • node_modules 폴더 내 모듈 설치
▷ 모듈 목록 보기
  • npm list
  • npm list async
◎ 모듈 검색
▷  모듈 검색 : npm search
▷  정보 보기 : npm info

◎ 모듈 업데이트
▷ npm update [모듈명]

◎ 모듈 삭제
▷ npm uninstall [모듈 이름]

◎ 전역 모듈
▷ 전역 모듈
  • Node.js의 중앙 라이브러리에 설치 : lib/modeules
  • 위치는 시스템마다 달라짐
▷ 전역 모듈 다루기
  • npm 명령에 -g 옵션만 추가
  • 관리자 권한
◎ 전역 모듈 - 모듈, 전역 설치와 삭제
▷ 설치

  • [sudo] npm install -g nodemon
▷ 삭제
  • [sudo] npm uninstall -g nodemon
◎ 전역 모듈과 지역 모듈 중
▷ 지역 모듈 권장
  • 개발에 필수 라이브러리
  • 특정 버전 모듈에 의존적인 상황
▷ 유틸성(mocha, nodemon)은 전역 설치 권장

2. 패키지 정보

◎ 패키지 설정 파일
  • package.json
  • npm init 으로 생성
  • 패키지에 대한 정보 입력
◎ 패키지 정보 파일 : package.json
{
    "name": "package_sample",
    "version": "1.0.0",
    "description": "패키지 설정",
    "main": "main.js",
    "scripts": {
        "test": "echo \"Enter: no test specified\" && exit 1"
    }
    "author": "",
    "license": "ISC"
}

◎ 패키지 정보 중 의존성 정보
"dependencies": {
    "async":"^1.5.0",
    "jade": "^1.0,0"
},
"devDependencies": {
    "mocha": "^2.3.4"
},

◎ 패키지 정보 기록하기

  • 의존성 정보 기록 : npm install async --save
◎ 패키지 의존성 정보 사용하기
  • 패키지 정보 파일에 기록된 모듈 설치/업데이트
    → npm install
    → npm update

3. 확장 모듈 : nodemon

◎ nodemon
▷ 소스 코드 수정 후 재시작

  • 동작 멈추기, 다시 시작
▷ 수정 후 자동 재시작
  • nodemon source.js
◎ 모듈 nodemon
▷ 설치
  • 글로벌로 설치
  • 관리자 권한 필요
    [sudo] npm install -g nodemon
▷ 실행
  • nodemon app.js

4. 모듈 만들기

◎ 모듈 만들기
▷ 소스 코드 분리
  • 모듈
▷ 모듈 작성 방법
  • module.exports
▷ 모듈 사용하기
  • 모듈 로딩 : require
  • require('./greeting.js'); // 경로에 대한 명시가 필요, 경로 없으면 node_module에서 찾음
▷ 모듈 로딩 에러
  • require('greeting.js');
  • Error: Cannot find module 'greeting.js'
◎ 함수 exports
▷ 모듈 greeting.js
module.exports.goodMorning = function() {
    // 모듈 함수 기능 작성
}

exports.goodNight = function(arg, callback) {
    // module 생략 가능
}

▷ 사용하기
var greeting = require('./greeting.js');
greeting.goodMorning();

◎ 모듈 만들기
▷ exports 하지 않은 함수는 사용 불가
function goodAfternoon() {
    console.log('goodAfternoon');
}
▷ 사용하기
var greeting = require('./greeting.js');
greeting.goodAfternoon();
▷ 에러

  • TypeError: greeting.goodAfternoon is not a function
▷ 클래스 정의 exports
function BusDef() {
    this.take = function() {}
}

function MetroDef() {
    this.ride = function() {}
}
module.exports.Bus = BusDef;
exports.Metro = MetroDef; // module 생략 가능
▷ 사용하기
var Bus = require('./transport').Bus; // 클래스
var bus = new Bus(); // 객체생성
bus.take();

▷ 클래스 exports
function Exercise() {
    this.pushup = function();
}
Exercise.prototype.run = function() {
}
module.exports = Exercise; // module 생략 불가
// 하나의 모듈 내에서 단 하나의 class만 export할 때 사용

▷ 사용하기
var Exercise = require('./exercise');
var exercise = new Exercise();
exercise.pushup();

▷ 객체 exports - 객체 단위로
var student = {
    hour : 0,
    study : function() {
        this.hour++;
        console.log(this.hour + '시간째 공부 중');
    }
}
module.exports = student;

▷ 사용하기
var you = require('./student.js');
you.study();

▷ 모듈은 캐쉬됨
var you = require('./student.js');
you.study(); // 1
you.study(); // 2

// 모듈 로딩
var him = require('./student.js');
him.study(); // 3시간째 공부 중

학습정리

◎ 지금까지 'npm을 이용한 모듈 관리'에 대해 살펴보았습니다.

▷ npm
npm을 이용해서 모듈을 찾고 설치할 수 있습니다.

▷ 패키지 정보
패키지 정보 파일 사용 방법을 알아봤습니다.

▷ 확장 모듈, nodemon
확장 모듈 nodemon을 설치해보고 사용해봤습니다.

▷ 모듈 만들기
커스텀으로 모듈을 만들어봤습니다.


댓글 없음: