npm の利用

npm (node package manager) は node.js 用のパッケージマネージャーであり,Python でいうところの easy_install,あるいは Ruby でいうところの gem のようなツールです.

npm のインストール

curl でインストールシェルを取得して実行します.2010年末時点では node.js 本体もそうですが各種ライブラリも安定版が少ないのでユーザーごとにインストールする方法がお勧めです。

npm の環境変数設定は $HOME/.npmrc に記述します.その後,インストールシェルを実行すれば npm コマンドが binroot にインストールされます.

$ cat >>$HOME/.npmrc <<NPMRC
root = ~/.node_libraries
binroot = ~/bin
manroot = ~/share/man
NPMRC
$ curl http://npmjs.org/install.sh | sh

binroot に設定したディレクトリにPATHが通っていることを確認して以下を実行してみてください.

$ npm

Usage: npm <command>

where <command> is one of:
    activate, adduser, bn, build, bundle, c, cache,
    completion, config, deactivate, deprecate, help, i, init,
    install, link, list, ln, ls, outdated, owner, publish, r,
    rb, rebuild, repl, restart, rm, start, stop, tag, test, u,
    uninstall, unpublish, up, update, update-dependents, view
...

あとは npm install などのコマンドを使ってパッケージを管理可能です.

試しに、 HTTP Server で使うexpressフレームワークをインストールしてみます.

$ npm install express
npm info it worked if it ends with ok
npm info using npm@0.2.7-1
npm info using node@v0.3.0
npm info fetch http://registry.npmjs.org/express/-/express@1.0.0rc4.tgz
npm info fetch http://registry.npmjs.org/connect/-/connect-0.2.7.tgz
npm info preinstall express@1.0.0rc4
npm info preinstall connect@0.2.7
npm info install express@1.0.0rc4
npm info postinstall express@1.0.0rc4
npm info preactivate express@1.0.0rc4
...
npm ok

これでインストール完了です.npm でインストールされたパッケージは require.paths が通っていますのですぐに利用することができます.

$ node
> var express = require('express');
The 'sys' module is now called 'util'. It should have a similar interface.

npm パッケージを作る

せっかくなので,npm のパッケージの作り方を簡単に説明します.

次のようなディレクトリ構造を作ります.

mypackage/
   lib/index.js
   test/
   package.json
   LICENSE
   README

lib にはライブラリを, test にはテストコードを入れましょう.lib/index.js には次のようにライブラリ関数を定義しておきます.

exports.hello = function(name){
   console.log("Hello " + name);
};

そしてパッケージ化に重要なのは package.json です.npm のパッケージは package.json ファイルにメタデータを記述します.以下に例を示します(urlなどはダミーです).

{
   "name": "mypackage"
,  "main": "./lib/index"
,  "version": "0.1.0"
,  "description": "This is my first package"
,  "tags" : ["test", "sample"]
,  "author" : "Yohei Sasaki <yssk22@gmail.com>"
,  "repository": {
      "type": "git"
   ,  "url" : "http://github.com/yssk22/mypackage"
   }
,  "bugs" : {
      "web" : "http://github.com/yssk22/mypackage/issues"
   }
,  "licenses" : [{
      "type" : "MIT"
   ,  "url" : "http://github.com/yssk22/mypackage/raw/master/LICENSE"
   }]
}

“main” メンバーに実際のライブラリファイルのパスを記載します.これで,パッケージインストール後に require(‘mypackage’) することで lib/index.js で export したライブラリが仕様できるようになります.

実際にインストールして試してみます. npm install はディレクトリを指定してインストールすることが可能です.

$ cd mypackage/
$ npm install .
npm info it worked if it ends with ok
npm info using npm@0.2.7-1
npm info using node@v0.3.0
npm info preinstall mypackage@0.1.0
npm info install mypackage@0.1.0
...
npm ok

正常にインストールできれば,あとは普通にrequireで使えます.

$ node
> require('mypackage').hello('npm package')
Hello npm package

npm パッケージを公開する

パッケージができたら公開してみましょう. node.js のライブラリはまだまだ未完成な上,全世界で絶賛開発中です.是非自分で有用なライブラリを作って公開して下さい.ライブラリを公開しておくと,他の人が簡単に利用できるようになります.

ユーザー登録

ユーザー登録もnpmコマンドで行えます.adduser コマンドを使います.

$ npm adduser

公開

publish コマンドを使います.

$ npm publish

これで他の人が npm install mypackage でインストールできるようになります.

尚,npm の最新版 0.2.7-x 系でadduserの結果が ~/.npmrc に正常に反映されていないケースがあるようです(adduser時にユーザーが存在していて,ユーザーのアップデートをした場合など).~/.npmrc に以下のようなエントリが書き込まれていることを確認してください.もし書き込まれていない場合は,エディタで設定を行う必要があります.

username = yssk22
email = yssk22@gmail.com
_auth= base64(username:password)

公開を取りやめる

ライブラリの公開を取りやめるには unpublish コマンドを使います.

$ npm unpublish

Table Of Contents

Previous topic

標準ライブラリ

Next topic

HTTP Server

This Page