2011年6月24日金曜日

JavaScriptのパッケージ管理システムのEnder.jsを見た

Ender - the no-library library.というJavaScriptのパッケージ管理ライブラリみたいなものをちょと触った。

node.jsが必要で、npmでインストールする
最近、JavaScript関係でもNode.jsを使ったものが多いので、Windowsでも使えるようにWindowsからVM上のLinuxをSSH経由で利用する開発環境の構築 | Web scratchとかCygwinで準備しておいた方がいい気がする(そのうちWindows版Nodeでると思いますが。Porting Node to Windows With Microsoft’s Help « node blog)

$ npm install ender -g

ender.js自体はパッケージ管理、ビルドなどのコマンドラインツールだと思う。
デフォルトでいくつかJavaScriptパッケージ(ライブラリともいう)が入ってる。
ender build でパッケージをビルドして、ender.min.jsとender.jsが生成される。

$ ender build scriptjs backbone
ender infoでアクティブなパッケージ群が表示できて、結構面白い。

X/ _ / X <  ender info
Welcome to ENDER - The no-library library
-----------------------------------------
Your current build type is "build"
Your current library size is 7.9 kb

Active packages:
└─┬ jeesh@0.0.5 - The official starter pack for Ender.
├── domready@0.2.4 - bullet proof DOM ready method
├── qwery@2.1.2 - blazing fast CSS1|2|3 query selector engine
├── bonzo@0.6.1 - Library agnostic, extensible DOM utility
└── bean@0.1.9 - an events api for javascript

パッケージを追加するには、ender addでできる。
ender addしたときに、既にビルドしたender.jsなどがあったら自動で更新されたりしてるのが面白い。

X/ _ / X <  ender add underscore
Welcome to ENDER - The no-library library
-----------------------------------------
installing packages: "underscore"...
this can take a minute...
successfully finished installing packages
assembling packages...
ender.js successfully built!
ender.min.js successfully built!
X / _ / X < ender info
Welcome to ENDER - The no-library library
-----------------------------------------
Your current build type is "build"
Your current library size is 10.7 kb

Active packages:
├─┬ jeesh@0.0.5 - The official starter pack for Ender.
| ├── domready@0.2.4 - bullet proof DOM ready method
| ├── qwery@2.1.2 - blazing fast CSS1|2|3 query selector engine
| ├── bonzo@0.6.1 - Library agnostic, extensible DOM utility
| └── bean@0.1.9 - an events api for javascript
└── underscore@1.1.6 - JavaScript's functional programming helper library.
パッケージから取り除くには
ender remove

を使う。
パッケージごとにバージョンを指定したりもできるみたい

ender set bean@0.0.3

使えるパッケージ(ライブラリ)はEnder.js - The open submodule libraryとかに書いてあるのとか、自分で追加したりできるんだと思う。
Ender.js - The open submodule libraryは小さな機能集合で、全部入れればjQueryと似たような機能はだいたいあるような気がする。underscore.jsとかbackbone.jsとかもパッケージに追加できたりして、好きな機能だけが入ったものをビルドできたりして仕組み的にはいいかもしれない。
(内部のコードがどうなるかがアレですが)

最初はスターターパックとか書かれている

のパッケージをいれたJEESHとか言うので試してみてる。(このJEESH自体はCDNでホスティングされてるみたい)
DOM系でjQueryライクなものを集めた感じ。

X / _ / X <  ender -b jeesh
Welcome to ENDER - The no-library library
-----------------------------------------
installing packages: "ender-js jeesh"...
this can take a minute...
successfully finished installing packages
assembling packages...
ender.js successfully built!
ender.min.js successfully built!
X / _ / X < ender info
Welcome to ENDER - The no-library library
-----------------------------------------
Your current build type is "build"
Your current library size is 7.9 kb

Active packages:
└─┬ jeesh@0.0.5 - The official starter pack for Ender.
├── domready@0.2.4 - bullet proof DOM ready method
├── qwery@2.1.2 - blazing fast CSS1|2|3 query selector engine
├── bonzo@0.6.1 - Library agnostic, extensible DOM utility
└── bean@0.1.9 - an events api for javascript

underscore.jsにDOM系のものも混ぜたいとか思ったら、触ってみると良さそうな気がする。

$.map(['a', 'b', 'c'], function (letter) {
  return letter.toUpperCase();
}); // => ['A', 'B', 'C']

$.uniq(['a', 'b', 'b', 'c', 'a']); // => ['a', 'b', 'c']

みたいな感じで、underscore.jsも$から使えるようになる。

まだ実際にコード書いてなくて、パッケージ管理としての機能を見てだけなので、使ってみてどうなのかは分からない。

小さな機能別のライブラリを集めて使うってので、microjsを思い出した。

0 コメント:

コメントを投稿