自作ゲーム「Gブレイバー」のpackage.jsonをさらす

# はじめに
[趣味で作っている「Annict」というRails製サービスのGemfileを晒す](http://qiita.com/shimbaco/items/325049b45be68ecbfc67)

上の記事に触発されたので、趣味で作っている対戦ゲーム「Gブレイバー」のpackage.jsonをさらしてみたいと思います。

#package.json
本記事投稿時点でのpackage.jsonはこんな感じです。

```js:package.json
{
  "name": "gbraver",
  "version": "0.5.0",
  "description": "It is an online game that was made by a combination of socket.io and enchant.js",
  "author": {
    "name": "Y.Takeuchi",
    "email": "kaidouji85@gmail.com"
  },
  "private": true,
  "scripts": {
    "start": "./shell/startup.sh",
    "test": "mocha unitTest/** -R spec"
  },
  "dependencies": {
    "express": "4.8.0",
    "ejs": "0.8.5",
    "cloneextend": "0.0.3",
    "mongodb": "^1.3.23",
    "passport": "0.2.0",
    "socket.io": "^1.0.4",
    "passport-google-oauth": "0.1.5",
    "body-parser": "^1.8.2",
    "multer": "^0.1.4",
    "cookie-parser": "^1.3.3",
    "express-session": "^1.8.2",
    "method-override": "^2.2.0",
    "morgan": "^1.3.1",
    "errorhandler": "^1.2.0",
    "glob": "^4.0.6",
    "grunt": "^0.4.5",
    "grunt-s3": "^0.2.0-alpha.3",
    "grunt-exec": "^0.4.6"
  },
  "devDependencies": {
    "chai": "1.9.0",
    "mocha": "1.17.1",
    "selenium-webdriver": "2.42.0",
    "socket.io-client": "^1.0.4"
  },
  "engines": {
    "node": "0.10.x"
  }
}
```

## express
http://expressjs.com/
node.jsでサーバサイドアプリを開発する際のフレームワークになります。イメージ的にはnode.jsでもjspが使えるようにしたものです。Gブレイバーでは静的コンテンツの配信サーバとして使用しています。

## ejs
http://www.embeddedjs.com/
サーバサイドで使っているテンプレートエンジンになります。開発当初ではexpress標準採用テンプレートエンジンがこれだったので、そのまま使い続けています。

## cloneextend
https://github.com/shimondoodkin/nodejs-clone-extend
オブジェクトのディープコピーをするためのライブラリです。

## mongodb
https://www.npmjs.com/package/mongodb
mongoDBを操作するためのライブラリです。開発当初にはMongooseとかあったのですが、データ構造を開発しながら色々変えたいと思ったのでこちらを選択しました。

## passport
http://passportjs.org/
Oauthなどの外部認証をnode.jsで実現するためのライブラリです。前提条件として、利用するアプリケーションはexpressで作られている必要があります。また、passport自体は認証機能を持っておらず、後述する様々なミドルウェアを導入する必要があります。今日みたら、サイトが変わっていました。もしかすると、前よりも簡単に導入できるようになっているかも知れません。

## socket.io
http://socket.io/
node.jsで通信処理を行うためのライブラリです。こいつを使えば、通信処理が滅茶苦茶簡単に書けます。私がnode.jsを使っている理由の9割型が、socket.ioを使うためと言っても過言ではありません。

## passport-google-oauth
https://github.com/jaredhanson/passport-google-oauth
passportでgoogle oauth認証をするためのミドルウェアです。基本的にpassportでは実現したい外部認証ごとに、ミドルウェアを導入するスタイルになります。

## Express3 -> 4に移行した時に入れたモジュール
Express3から4に移行した際に、互換性を保つために入れたモジュールです。

### body-parser
https://github.com/expressjs/body-parser

### multer
https://github.com/expressjs/multer

### cookie-parser
https://github.com/expressjs/cookie-parser

### express-session
https://github.com/expressjs/session

### method-override
https://github.com/expressjs/method-override

### morgan
https://github.com/expressjs/morgan

### errorhandler
https://github.com/expressjs/errorhandler


## glob
https://www.npmjs.com/package/glob
globコマンドをnode.jsを使えるようにするモジュールです。イメージ的にはdir/**.jsというように、ワイルドカードを使ってファイル検索をする用途に使います。Gブレイバーでは画面側のテストコード一覧を出力するために使っています。

## grunt
http://gruntjs.com/
言わずと知れたnode.jsのタスクランナーですね。Gブレイバーではデプロイ関連のタスクにgruntを使っています。

## grunt-s3
https://github.com/pifantastic/grunt-s3
gruntでs3操作をするためのタスクになります。Gブレイバーでは画像、音楽ファイルをS3上に置いていますが、そのアップロードに本モジュールを使っています。

## grunt-exec
https://github.com/jharding/grunt-exec
gruntで任意のコマンドを実行するためのモジュールです。Gブレイバーではherokuコマンドをこれで叩いてます。

## chai
http://chaijs.com/
言わずとしれたアサーションライブラリ。Gブレイバーでもお世話になっています。

## mocha
https://github.com/mochajs/mocha
これも言わずとしれたテストフレームワーク。

## selenium-webdriver
https://code.google.com/p/selenium/wiki/WebDriverJs
selenium-webdriverをnode.jsから動かすためのライブラリです。

## socket.io-client
https://github.com/automattic/socket.io-client
socket.ioのクライアントをnode.jsで生成できるモジュールです。こいつは主にsocketioがらみのテストで利用しています。

# おわりに
いかがでしたでしょうか。こうやって並べてみると、結構色々なパッケージを使っていたんだなと思います。