npmのプライベートレジストリをつくる
npmのプライベートレジストリを作ってみたので手順をメモっときます。環境はOSX 10.7.4です。
1.CouchDBをインストール
お好みの方法でCouchDBをインストールします。今回はHomebrewで入れました。
$ brew install couchdb
$ couchdb -V
couchdb - Apache CouchDB 1.2.0
インストールが完了したら、CouchDBを起動します。
$ couchdb Apache CouchDB 1.2.0 (LogLevel=info) is starting. Apache CouchDB has started. Time to relax. [info] [<0.31.0>] Apache CouchDB has started on http://127.0.0.1:5984/
3.アプリケーションをインストールする
以下のコマンドでnpm registryのアプリケーションをCouchDBにインストールします、
$ git clone https://github.com/isaacs/npmjs.org.git $ cd npmjs.org $ npm install couchapp $ npm install semver $ node_modules/.bin/couchapp push registry/app.js http://localhost:5984/registry $ node_modules/.bin/couchapp push www/app.js http://localhost:5984/registry
これで、空のレジストリができました。
4.レプリケーション設定
本家からのレプリケーションを行います。
CouchDB 1.2.0だと、レプリケーションは管理者権限が必要なので管理者ユーザを作成します。
$ curl -X PUT http://localhost:5984/_config/admins/${USERNAME} -d'"${PASSWD}"'
curl -X POST -H "Content-Type:application/json" \ http://${USERNAME}:${PASSWD}@localhost:5984/_replicate -d \ '{"source":"http://isaacs.iriscouch.com/registry/", "target":"registry"}'
5.npmコマンドの設定
npmコマンドが使用するレジストリとして、作成したプライベートレジストリを指定します。
~/.npmrcに以下の設定を加えます。
registry = http://localhost:5984/registry/_design/app/_rewrite
プライベートレジストリを利用する際に、npm configにオリジナルのレジストリの認証設定が残っていると401エラーになるので、設定を変更する必要があります。