node.js に npm で express をインストールして試す

node.js と npm を Ubuntu にセットアップ - Tosshi Note の続きです。
npm で Express - node.js web application framework を入れて動かす。
express は node.js をさらに使いやすくするフレームワーク。使ったことがないが RubySinatra ライクだそうです。

express をインストール

  • g はグローバルオプション。これを付けないとコマンド実行パスの node_modules にインストールされる。
$ sudo npm install -g express

expressのヘルプ確認

セッション機能やテンプレート、CSSエンジンの指定ができることがわかる。

$ express -h

  Usage: express [options] [path]

  Options:
    -s, --sessions           add session support
    -t, --template <engine>  add template <engine> support (jade|ejs). default=jade
    -c, --css <engine>       add stylesheet <engine> support (less|sass|stylus). default=plain css
    -v, --version            output framework version
    -h, --help               output help information

アプリを作る

雛形を作成する。

$ express app1
   create : app1
   create : app1/package.json
   create : app1/app.js
   create : app1/views
   create : app1/views/layout.jade
   create : app1/views/index.jade
   create : app1/public/javascripts
   create : app1/public/images
   create : app1/public/stylesheets
   create : app1/public/stylesheets/style.css

アプリの依存モジュールをインストール

実行するには app.js を node でたたく。

$ cd app1
$ node app.js

このまま IPアドレス:3000でブラウザで開くと jade が無いと怒られる。テンプレートエンジンを指定していなかったのでデフォルトのは jade になっている。
ちなみに express 自体も app1 から見られない状態なのでこちらも依存できるようにする必要がある。
パスを通せばいいと思うかもしれないが、思想に倣ってローカルに node_modules を展開する。

$ cd app1
$ npm install
express@2.4.6 ./node_modules/express 
├── qs@0.3.1
├── mime@1.2.4
└── connect@1.7.1
jade@0.15.4 ./node_modules/jade 
├── commander@0.1.0
└── mkdirp@0.0.6

アプリディレクトリで npm install を実行すると、依存ライブラリを自動で入れてくれる。
以前のバージョンでは npm bundle だったみたい。

パスを通すには、app.js の先頭に

require.paths.unshift('/usr/local/lib/node_modules');

を加える。

実行

$ node app.js 
Express server listening on port 3000 in development mode

ブラウザからアクセスして Welcome to Express の後に何も表示されなければ成功。

Production モードでの起動は環境変数NODE_ENV で切り替える。

$ NODE_ENV=production node app.js

キャッシュ機能の多くは production モードでないと有効にならないので注意とのこと。