Windows 環境で npm っぽい事をやる ryppi

さんざん

「npm が無いから地道にダウンロードして配置する」みたいな事をやってきましたが、言ってもただのパッケージ管理システム。似たようなものを作ってる人は既にいたみたいです。というかそんだけ困ってるんだったら自分でも作れよって感じですが・・・

ryppi.py

これが今回使用する npm に似たような事をやってくれる python スクリプトです。
本家サイト

README には以下のような事が書いてあります。

Main differences to npm:
No version comparison, or compatibility check, only version matching to latest.
Module dependencies are all installed in to the root modules directory, in order to avoid package redundancy.

バージョンに関しては互換性やらのチェックはしないでマッチする最新のを取ってくるって事ですかね。

さっそく使ってみる

ダウンロード

本家サイトからダウンロードしてきます。必要なのは ryppi.py だけ。
python のバージョンに関しては

# python 2.5 (ok, if you install simplejson by hand)
# python 2.6 (ok)
# python 2.7 (ok)
# python 3.0 (ok)
# python 3.1 (ok)
# python 3.2 (ok)

となってるので、既に入っていればそれを使えばよいかと。

express をインストールしてみる。
> python ryppi.py install express
Installing http://registry.npmjs.org/express/-/express-2.4.6.tgz into .\node_mod
ules\express ...
Checking dependencies for express ...
Installing http://registry.npmjs.org/qs/-/qs-0.3.1.tgz into .\node_modules\qs ..
.
Checking dependencies for qs ...
Installing http://registry.npmjs.org/mime/-/mime-1.2.3.tgz into .\node_modules\m
ime ...
Checking dependencies for mime ...
Installing http://registry.npmjs.org/connect/-/connect-1.7.0.tgz into .\node_mod
ules\connect ...
Checking dependencies for connect ...
Checking dependencies for qs ...
Checking dependencies for mime ...
All done.

ぎゃーーーー、できちゃいましたね。これまでの苦労はいったいなんだったんだ。

本当に動くの?

上記が終了すると以下のような構成になってます。

/
+ ryppi.py
+ node_modules
  + express
  + connect
  + qs
  + mime

では以下のスクリプトを実行して、取得できたものが本当に動作するか試します。
配置は node_modules と同じ場所で hello.js という名前で保存します。。

var express = require('express');

var app = express.createServer();

app.get('/hello', function (req, res) {
    res.send('Hello!');
});

app.listen(8000);
> node.exe hello.js

http://localhost:8000/hello にアクセスすると、おお、動作してますね。

ryppi 便利!

これは正式に npm が提供されるまでは十分使えるのではないでしょうか。

追記

既に以下サイトでも紹介されてますね。もっと早く気づけば・・・
でもバッチファイル化のことも知れて良かった。

追記 2

ryppi を使うと最新がとれてきてしまうので、以前書いた mongodb-native が 0.9.3 でしか動作しないという件に引っかかります。 mongodb-native だけは手動で落としてきましょう。