クライアントJSをパッケージ管理できるjamjsが便利

nodeのnpmみたいなインターフェースで、クライアントjsの依存管理をする。

インストール

$ npm install -g jamjs

package.jsonのjamプロパティ以下に依存モジュール書く

{
  "name": "hogefuga",
  "version": "0.0.0",
  "jam": {
    "baseUrl": ".",
    "packageDir": "vendor",
    "dependencies": {
      "jquery": "1.7.x",
      "backbone": null,
      "underscore": null
    }
  }
}

package.jsonの定義に従ってダウンロード

$ jam install

自分はcompileまでする。

$ jam compile vendor/all.js

あとはみたいに読みこめば、jquery,backbone, underscoreが読み込み終わったのと同じ状態になる。

本来の使い方

自前のライブラリと連携させつつrequire.jsを使うといいらしいけど、個人的にはモジュール一つにつき汚す名前空間が1つならどうでもよくて、vendor/all.jsにまとめておければそれでいいと思った。

困ったこと 1

jamjsが内部で使っているnode-promptのAPIが変わってて、新しいパッケージを登録しようとした時に、prompt#readLineで落ちてしまっていた。変更後のAPIの名前がわからないのでとりあえずコード中にユーザー名とパスワード直打ちして解決した。悲しい。

困ったこと 2

どうしてもコントリビューターが少ないので登録パッケージが有名な奴しか無く、しかもjamjsの作者が勝手に登録しているものも多いので、勝手知ったる他人の庭感ある。(ライセンス的には問題ない)

enchant.jsを勝手に登録してみた。enchant.jsだとプラグインが大量にあるんだけどそれを全部登録するのもアレな気がするし、自分がマメにメンテするとも思えないので、必要な奴は適当に登録して、もしjamjs流行ったらその都度作者に譲渡していくのがいいと思っている。