
昨日の記事では、Node.jsアプリでHello worldする際に、それに必要なファイル(web.js, package.json, Procfile, .gitignore)を1個ずつ新規作成してたけど、expressコマンドを使えばその雛形を自動生成できることに後から気づいた。これを使うと、web.js(=app.js)とpackage.jsonの2つは自動生成できる。Sinatra単体には無い機能*1だね。
あと、Sinatraアプリ開発時に使われる自動リロード機能(ShotgunやSinatraReloaderなど)に相当する「node-dev」をちょっと使ってみたので、それについてもメモ。
expressをグローバルインストール
expressコマンドを使うには、Expressパッケージをグローバルインストールする。
$ npm install -g express /Users/ruedap/.node/v0.4.5/bin/express -> /Users/ruedap/.node/v0.4.5/lib/node_modules/express/bin/express express@2.3.11 /Users/ruedap/.node/v0.4.5/lib/node_modules/express
これでexpressコマンドが使えるようになる。
$ express -v 2.3.11
Node.js(Express)アプリの雛形を生成
expressコマンドを使って、今回は「hoge」アプリを作ってみる。
$ express hoge create : hoge create : hoge/package.json create : hoge/app.js create : hoge/pids create : hoge/public/javascripts create : hoge/public/stylesheets create : hoge/public/stylesheets/style.css create : hoge/logs create : hoge/views create : hoge/views/layout.jade create : hoge/views/index.jade create : hoge/public/images
これでhogeフォルダと、その中にNode.js(Express)アプリに必要なファイルが自動生成される。
hogeフォルダに移動して、アプリを起動するのに必要なパッケージをインストールする。ここではExpressとJadeが必要。
$ cd hoge $ npm install express jade jade@0.12.2 ./node_modules/jade express@2.3.11 ./node_modules/express ├── mime@1.2.2 ├── connect@1.4.6 └── qs@0.1.0
Expressパッケージをさきほどのグローバルと今のローカルの2箇所にインストールしてるのがちょっと謎なんだけど、こうしないとアプリを動かせられなかった。
最初にグローバルインストールしたExpressパッケージを使うようにもできるのかな? 要調査
これでもうNode.jsアプリ(雛形)を起動できるので、nodeコマンドを使って起動する。
$ node app.js
http://localhost:3000/ にアクセスして「Welcome to Express」と表示されていれば成功。
Ctrl+Cでアプリを終了する。
自動リロードツールを使う
例えば、今作ったNode.js製Hogeアプリの「Welcome to Express」と表示されているところを「Welcome to Hoge」に変更したとする。Hogeアプリだからね。
通常、その変更部分をアプリで確認したい場合、
- nodeコマンドでアプリを起動していたら、一旦終了する
- 再度nodeコマンドを使ってアプリを起動する
と、変更を加えるたびにアプリを再起動する必要がある。これはめんどい。
これを自動で行ってくれるリロードツールが「node-dev」で、SinatraでいうとShotgunやSinatraReloaderに相当する。たぶん。
これもExpressパッケージの時と同じように、グローバルインストールしてnode-devコマンドを使えるようにする。
$ npm install -g node-dev /Users/ruedap/.node/v0.4.5/bin/node-dev -> /Users/ruedap/.node/v0.4.5/lib/node_modules/node-dev/node-dev node-dev@0.1.6 /Users/ruedap/.node/v0.4.5/lib/node_modules/node-dev
これでnode-devコマンドが使えるようになるので、node-devコマンドを使ってアプリを起動する。
$ node-dev app.js
先ほどと同じように、http://localhost:3000/ にアクセスすると「Welcome to Express」と表示されるはず。ここまでは同じ。
で、さっそくapp.jsのウェルカム部分に修正を加えてみる。
app.get('/', function(req, res){ res.render('index', { title: 'Hoge' // ここを変えた }); });
このように修正を加えて保存、http://localhost:3000/ にもう一度アクセス(既に開いていればブラウザを更新)すると「Welcome to Hoge」に変更される。便利。
(via) CoffeeScriptはじめの一歩 - 223 Software
(via) node.jsのプログラムを自動で再起動してくれるnode-devコマンド - 大人になったら肺呼吸
*1:Padrinoを使えばできる