Edited at

node.jsのパッケージをつくる

More than 3 years have passed since last update.

substack氏のjs-traverseを参考にした。


モジュール仕様

コンストラクタに渡したロケールに従いあいさつを返す。

使い方は以下みたいな感じ。

var hello = require('hello');

hello('ja').say(); // => 'こんにちわ!'
hello('en').say(); // => 'Hello!'
hello('???').say(); // => 'Hello!'
hello().say(); // => 'Hello!'



  • jaを渡すと日本語で、enを渡すと英語であいさつを返す。

  • 不明なロケールを渡した場合は、英語であいさつ。


package.jsonの生成

まずは雑にpackage.jsonを作る。

$ npm init

出来上がったpackage.jsonは、こんな感じ。


package.json

{

"name": "hello-node-package",
"version": "0.0.1",
"description": "Hello node package",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "thina",
"license": "MIT"
}


実装

パッケージのルートディレクトリに、index.jsというファイル名で保存。


index.js

module.exports = function(locale) {

return new Hello(locale);
};

function Hello(locale) {
this.locale = locale;
}

Hello.prototype.say = function() {
var greeting = '';

switch (this.locale) {
case 'ja':
greeting = 'こんにちわ!';
break;
case 'en': // fall through
default:
greeting = 'Hello!';
break;
}

return greeting;
};



動かしてみる

パッケージのルートディレクトリでnodeを起動する。

 node

> var hello = require('./')
undefined
> hello('ja').say()
'こんにちわ!'
> hello('en').say()
'Hello!'
> hello('???').say()
'Hello!'
> hello().say()
'Hello!'


テストする

tapeを使う。

$ npm install tape --save-dev

テストは、testディレクトリの下に作る。

$ mkdir test

$ touch test/hello.js

テストコードは以下。


hello.js

var hello = require('../');

var test = require('tape');

test('say', function(t) {
var en = hello('en').say();
t.equal(en, 'Hello!');

var ja = hello('ja').say();
t.equal(ja, 'こんにちわ!');

var unknown = hello('unknown').say();
t.equal(en, unknown);

var undef = hello().say();
t.equal(en, undef);

t.end();
});


package.jsontest commandを定義する。


package.json

{

... (snip) ...

"scripts": {
"test": "tape test/*.js"
},

... (snip) ...

}


テストを実行してみる。

$ npm test

> hello-node-package@0.0.1 test /Users/hina/devel/github/hello-node-package
> tape test/*.js

TAP version 13
# say
ok 1 should be equal
ok 2 should be equal
ok 3 should be equal
ok 4 should be equal

1..4
# tests 4
# pass 4

# ok


Download

https://github.com/toshiyukihina/hello-node-module.git