nodejs/npmで俺々ライブラリマネージャ作ってみた

npmの練習がてらに俺々ライブラリマネージャ作ってみました。

なにができるの

  • ネット上に転がっている有象無象の javascript をバージョンごとにローカルで管理できます。
  • 登録したライブラリは node/express で簡単に出力できます

要はネット上に転がってるjQueryのプラギンとかをどうにかしたかったんです。
npmがnodeにまつわるライブラリを集めているのですが、クライアントサイドはそういうものがなかったので、とりあえずでっちあげました。

$  js-manager 
- v0.0.1
[commands]
 - help
 - installed
 - search
 - versions
 - install

$ js-manager install jquery
fetching jquery@latest
saved as jquery-1.6.2.min.js

$ js-manager versions jquery
[package] jquery
 - latest
 - 1.6.2

※ 今は jQueryと mootools しか登録してないです

nodejs/expressと一緒に使うことを想定してます

var express = require('express');
var app = express.createServer();
var jsm = require('js-manager');
console.log(jspm);

var paths = jsm.createPath( app, [ 'jquery@1.6.2','mootools' ] );

app.get('/',  function(req,  res){
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.end(
        '<html>'+
        '<script src="'+paths.jquery+'"></script>'+
        '<a href="'+ paths.jquery+'">'+paths.jquery+ '</a>'+
        '<a href="'+ paths.mootools+'">'+paths.mootools+'</a>'+
        '</html>');
});
app.listen(3333);

js-manager#createPath() で呼ぶことでメモリに載せます。返り値はパス。

インストール

npm install -g js-manager
npm link js-manager

使い方

js-manager install jqeury@1.6.2

@でバージョン指定。@省略でlatest

フォーマット

~/.javascript_modules/resources.coffee を編集して追加します

exports.resources =
  jquery :
    latest: 'http://code.jquery.com/jquery-1.6.2.min.js'
    "1.6.2": 'http://code.jquery.com/jquery-1.6.2.min.js'

  mootools:
    latest:'http://mootools.net/download/get/mootools-core-1.3.2-full-compat-yc.js'
    "1.3.2":'http://mootools.net/download/get/mootools-core-1.3.2-full-compat-yc.js'

バージョンは latest のみ必須。
設定ファイルがcoffeescriptなのは、単に面倒だったからです。

TODO

  • デフォルトの登録ライブラリを充実させる。
  • 自作ライブラリをローカルで取り扱えるようにする
  • パス決め打ちをどうにかする(環境変数でいいかなぁ)
  • ドキュメントを書く

とくにライブラリは登録してなんぼなのでどうにかしたい。自分が使うやつだけでも。
ソースは GitHub - mizchi-sandbox/js-manager: browser side javascript manager です。正直やる気がでるかもわからないので、適当にフォークしてください。