Node.js 프로젝트에서 사용된 자신의 모듈을 공유하고 싶다면 NPM Regsitry를 이용하면 된다. Publis Registry에 등록하고 사용하는 방법에 대해 알아보자
1. NPM Registry
- NPM Registry는 누구나 Node.js에서 사용할 수 있는 모듈을 일정한 양식만 갖춘다면 등록할 수 있고,
npm 명령을 통하여 Module Registry 에서 필요한 모듈을 설치할 수 있다
- 홈페이지 : https://npmjs.org/
- 홈페이지에서 계정을 미리 생성해 놓자 : 자신이 등록한 모듈 목록을 볼 수 있다
2. 배포전 준비하기
- .npmignore 파일 : npm 저장소에 배포하지 않을 것들에 대해 열거한다. 해당 파일이 없을 경우 .gitignore를 사용한다
// .gitignore 내역
.DS_Store
.git*
node_modules/
- 모듈이 이미 GitHub에 등록되고 npm init을 통하여 package.json 파일 내역이 정확히 장성되었음을 가정한다 (참조)
// package.json 내역
// 주의)
// npm init으로 해당 파일 생성시 engines 내역은 포함되지 않는 관계로 사용하는 Node.js 버전을 명시하여 준다
// name : 값은 대문자와 띄워쓰기 없이 소문자로 이어서 작성한다
// version : semantic versioning을 사용한다 major.minor.patch
// main : 프로그램 진입점
// test : 테스트 프로그램 수행 스크립트 명령 (npm test)
{
"name": "mobiconstatistics",
"version": "0.0.1",
"description": "include statistics function such as the moving average",
"main": "./lib/mobiconStatistics.js",
"engines": { "node": ">= 0.10.0" },
"dependencies": {
"underscore": "~1.5.1"
},
"devDependencies": {
"mocha": "latest",
"should": "~1.2.2"
},
"scripts": {
"test": "mocha test/*.js"
},
"repository": {
"type": "git",
"url": "https://github.com/ysyun/mobiconStatistics.git"
},
"keywords": [
"mobicon",
"statistics",
"movingAverage"
],
"author": "yun youngsik",
"license": "MIT",
"bugs": {
"url": "https://github.com/ysyun/mobiconStatistics/issues"
}
}
3. 배포하기
- https://www.npmjs.org/ 사이트에 가입을 한다.
- 모듈 디렉토리로 이동하고 사용자를 추가합니다 : npm adduser
- 가입했던 username과 password등을 입력하면 된다.
Users/development/node-modules/mobiconStatistics> npm adduser
Username: (ysyun)
Password:
Email:
- 모듈 배포전 npm install이 잘 되는지 테스트 합니다
test 폴더를 하나 만들어서 기존에 만든 모듈을 install 해봅니다. test 폴더에 node_modules/mobiconstatistics 모듈을 설치되면 성공!
/Users/development/node-modules/mobiconStatistics> mkdir ../mobiconStatistics-installTest
/Users/development/node-modules/mobiconStatistics> cd ../mobiconStatistics-installTest
/Users/development/node-modules/mobiconStatistics-installTest> npm install ../mobiconStatistics
npm http GET https://registry.npmjs.org/underscore
npm http 304 https://registry.npmjs.org/underscore
mobiconstatistics@0.0.1 node_modules/mobiconstatistics
└── underscore@1.5.1
/Users//development/node-modules/mobiconStatistics-installTest/node_modules/mobiconstatistics> ls
-rw-r--r-- 1 staff 1096 8 13 17:09 LICENSE
drwxr-xr-x 3 staff 102 8 13 17:31 test
drwxr-xr-x 3 staff 102 8 13 17:41 lib
-rw-r--r-- 1 staff 49 8 14 11:26 .travis.yml
-rw-r--r-- 1 staff 904 8 14 11:34 README.md
-rw-r--r-- 1 staff 1881 8 14 14:19 package.json
drwxr-xr-x 3 staff 102 8 14 14:19 node_modules
- 모듈을 배포합니다 : npm publish
Users//development/node-modules/mobiconStatistics> npm publish
npm http PUT https://registry.npmjs.org/mobiconstatistics
npm http 201 https://registry.npmjs.org/mobiconstatistics
npm http GET https://registry.npmjs.org/mobiconstatistics
npm http 200 https://registry.npmjs.org/mobiconstatistics
npm http PUT https://registry.npmjs.org/mobiconstatistics/-/mobiconstatistics-0.0.1.tgz/-rev/1-b8e34dc09489f8c4c9ece305d250264a
npm http 201 https://registry.npmjs.org/mobiconstatistics/-/mobiconstatistics-0.0.1.tgz/-rev/1-b8e34dc09489f8c4c9ece305d250264a
npm http PUT https://registry.npmjs.org/mobiconstatistics/0.0.1/-tag/latest
npm http 201 https://registry.npmjs.org/mobiconstatistics/0.0.1/-tag/latest
+ mobiconstatistics@0.0.1
- 모듈이 잘 배포되었는지 확인합니다 : http://npmjs.org/package/<모듈명>
예) https://npmjs.org/package/mobiconstatistics
4. 모듈 사용하기
- 이제 npm registry로 자신의 모듈이 배포되었으므로 프로젝트에 첨부하여 사용할 수 있게 되었습니다.
// mobiconstatistics 모듈 추가하기
/Users/development/smart-solutions/SmartStatistics> npm install mobiconstatistics --save
npm http GET https://registry.npmjs.org/mobiconstatistics
npm http 200 https://registry.npmjs.org/mobiconstatistics
mobiconstatistics@0.0.1 node_modules/mobiconstatistics
// 프로젝트의 package.json에 mobiconstatistics 모듈 추가
/Users/development/smart-solutions/SmartStatistics> cat package.json
{
"name": "smartstatistics",
"version": "0.0.0",
"dependencies": {
"sails": "0.8.9",
"express": "~3.2.6",
"ejs": "~0.8.4",
"underscore": "~1.5.1",
"mobiconstatistics": "0.0.1"
},
- 트위터에서 npm registry에 배포된 모듈중 괜찮은 것들을 정리하여 트윗을 해준다 : @nodenpm
<참조>
- npm 이란?
'NodeJS > Modules' 카테고리의 다른 글
[AMD] 클라이언트 사이트 모듈 제어하기 (0) | 2013.03.16 |
---|---|
[Node.js] Node.js와 브라우져에서 모듈(Module) 사용하려면 (0) | 2013.03.16 |
[Socket.io] HTML5의 Websocket.io 아키텍쳐 (0) | 2013.01.13 |
[Modules] Prototype.js 사용하기 (0) | 2012.11.23 |
[CoffeeScript] Smooth CoffeeScript 배우기 (0) | 2012.10.30 |