학습목표
- npm을 이용한 모듈 관리 방법을 이해할 수 있습니다.
- 패키지 정보에 대해 알 수 있습니다.
- 확장 모듈 설치에 대해 이해할 수 있습니다.
- 커스텀 모듈을 만들 수 있습니다.
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();
▷ 에러
▷ 객체 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시간째 공부 중
▷ 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을 설치해보고 사용해봤습니다.
▷ 모듈 만들기
커스텀으로 모듈을 만들어봤습니다.
댓글 없음:
댓글 쓰기