LoginSignup
0
0

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-11-13

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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0