naveを使ったnode.jsインストールと、最近のnpmの使い方
今風のnode.js環境の作り方です。naveによって複数バージョンのnode.jsを共存させます。
またnpmも以前とは少し使い方が変わってるので、その使い方をフォローしています。
簡単な用語説明:
- node.js: イベント駆動アーキテクチャなサーバサイドJavaScript環境
- nave: 複数node.jsバージョンを管理するシステム
- npm: node.js用パッケージシステム
あらすじ
- naveダウンロード
- naveからnodejsインストール
- インストールしたnodejsにnpmインストール
- npmでグローバルモジュールインストール
必要なもの
事前に必要なものは、あらかじめパッケージをいれておきます:
- naveやnpmで必要な物
- nodejsビルドに必要な物
nameserver 8.8.8.8 nameserver 8.8.4.4
naveを使ったnodejsのインストール
naveをgitでダウンロードし、そこからnode.js最新版をインストールします。以下コマンド:
mkdir ~/.nave cd ~/.nave git clone git://github.com/isaacs/nave.git ~/.nave/nave/nave.sh install latest
以下、nodejs最新版のダウンロードとビルドが走ります。完成後、
~/.nave/nave/nave.sh use latest
とすると、さらにシェルが起動してその中でnodeコマンドが使えるようになります。(Ctrl+Dで抜けれる)
$ node -v v0.4.8
naveコマンドとして使えるよう、~/.bash_aliasesや~/.bash_profileなどに以下を追加しておくとよいです:
alias nave=$HOME/.nave/nave/nave.sh
このaliasで、nave.shはどこでもnaveコマンドとして使えます
$ nave use latest Already installed: 0.4.8 using 0.4.8 $
npm インストール
nodeコマンドが使えるようになった状態で、以下を実行します:
curl http://npmjs.org/install.sh | sh
途中対話モードになり"Is this OK? enter 'yes' or 'no'"と聞いてくるので、"yes"と打ちます。
nodeコマンドが使える状態のとき、npmコマンドが使えるようになります。
$ npm -v 1.0.6
グローバルパッケージとしてインストール
コマンドを提供するパッケージは、グローバル(といっても、nodeコマンドのある場所)に入れる必要があります。
たとえば以下のパッケージは、コマンドライン用コマンドを提供しています:
- vows: BDD(Behavior Driven Development)システム
- docco: ソースコードからドキュメント生成するツール
グローバルに入れるには、npm install -gで入れます:
npm install -g vows npm install -g docco
nodeコマンドが使える状態のとき、vowsコマンドとdoccoコマンドが使えるようになります。
アインインストールは以下のようになります:
npm uninstall -g vows npm uninstall -g docco
おまけ: ローカルパッケージとしてダウンロード
オプション-gがないと、実行ディレクトリ下に"node_modules"ディレクトリを作り、そこにパッケージが入ります。
その位置でnodeコマンドを実行すれば、入れたモジュールをrequireで読み込めるようになっています。
例: underscore.js
$ ls $ npm install underscore underscore@1.1.6 ./node_modules/underscore $ ls node_modules $ node > var _ = require("underscore") > _.map [Function] >
node_modulesはその直下のディレクトリ内からも有効になっています。
$ ls node_modules $ mkdir -p src/js $ cd src/js $ node > var _ = require("underscore") > _.map [Function] >
npmコマンドも上位ディレクトリのnode_modulesに対して機能します
$ npm install chaos chaos@0.1.7 ../../node_modules/chaos