TwitterがJavaScript framework "Flight"を公開していて、ちょっと触ってみようかなと思ってみてみたら、Installにはbowerを使うことをおすすめしますよ的なことが書いてあった。
bowerってなんだべと思ったら、こちらはTwitterが昨年公開していたHTML、CSS、JSのパッケージマネージャだった。
ということで、Flightの前にBowerを試してみることに。
まずは、bowerをnpmを使ってインストール。
~/% npm install bower -g .... bower@0.7.0 /usr/local/share/npm/lib/node_modules/bower ├── stable@0.1.3 ├── archy@0.0.2 ├── colors@0.6.0-1 ├── tmp@0.0.16 ├── async@0.1.22 ├── mkdirp@0.3.4 ├── semver@1.1.2 ├── request@2.11.4 ├── hogan.js@2.0.0 ├── lodash@0.9.2 ├── nopt@2.0.0 (abbrev@1.0.4) ├── rimraf@2.0.3 (graceful-fs@1.1.14) ├── fstream@0.1.21 (inherits@1.0.0, graceful-fs@1.1.14) ├── tar@0.1.14 (inherits@1.0.0, block-stream@0.0.6) ├── vows@0.6.4 (eyes@0.1.8, diff@1.0.4) ├── rc@0.0.7 (config-chain@1.1.4, optimist@0.3.5) ├── glob@3.1.17 (inherits@1.0.0, graceful-fs@1.1.14, minimatch@0.2.9) ├── read-package-json@0.1.12 (graceful-fs@1.1.14, lru-cache@2.0.4, slide@1.1.3, npmlog@0.0.2) └── unzip@0.0.4 (pullstream@0.0.4, binary@0.3.0)
続いて、nodeのexpressでサンプル用のアプリケーションを作成。
~/samples/node/% pwd /Users/chris/samples/node ~/samples/node/% express bower-sample create : bower-sample create : bower-sample/package.json create : bower-sample/app.js create : bower-sample/public create : bower-sample/public/javascripts create : bower-sample/routes create : bower-sample/routes/index.js create : bower-sample/routes/user.js create : bower-sample/public/images create : bower-sample/views create : bower-sample/views/layout.jade create : bower-sample/views/index.jade create : bower-sample/public/stylesheets create : bower-sample/public/stylesheets/style.css install dependencies: $ cd bower-sample && npm install run the app: $ node app
依存モジュールをインストール。
~/samples/node/bower-sample/% npm install .... npm http 304 https://registry.npmjs.org/formidable/1.0.11 jade@0.28.1 node_modules/jade ├── commander@0.6.1 ├── mkdirp@0.3.4 └── coffee-script@1.4.0 express@3.0.6 node_modules/express ├── methods@0.0.1 ├── fresh@0.1.0 ├── range-parser@0.0.4 ├── cookie-signature@0.0.1 ├── buffer-crc32@0.1.1 ├── cookie@0.0.5 ├── commander@0.6.1 ├── debug@0.7.0 ├── mkdirp@0.3.3 ├── send@0.1.0 (mime@1.2.6) └── connect@2.7.2 (pause@0.0.1, bytes@0.1.0, formidable@1.0.11, qs@0.5.1)
これで、以下のコマンドで起動する状態に。
~/samples/node/bower-sample/% node app
Express server listening on port 3000
ようやくここから本題。
まずはjqueryをインストール。
~/samples/node/bower-sample/% bower install jquery bower cloning git://github.com/components/jquery.git bower cached git://github.com/components/jquery.git bower fetching jquery bower checking out jquery#1.9.0 bower copying /Users/chris/.bower/cache/jquery/cf68c4c4e7507c8d20fee7b5f26709d9 bower installing jquery#1.9.0
最新版の1.9.0が、components/jquery/ フォルダ以下に入りました。
バージョンを指定するときは、#に続けてバージョンを入れます。
~/samples/node/bower-sample/% bower install jquery#1.8.1 bower cloning git://github.com/components/jquery.git bower cached git://github.com/components/jquery.git bower fetching jquery bower checking out jquery#1.8.1 bower copying /Users/chris/.bower/cache/jquery/cf68c4c4e7507c8d20fee7b5f26709d9 bower installing jquery#1.8.1
これでさっきの1.9.0を上書きする形で1.8.1が入りました。
もう一度最新版に戻してみます。
~/samples/node/bower-sample/% bower install jquery
今インストールされているモジュールの確認は bower list で。
~/samples/node/bower-sample/% bower list bower discover Please wait while newer package versions are being discovered /Users/chris/samples/node/bower-sample └── jquery#1.9.0
続いて bootstrapをインストールしてみます。
~/samples/node/bower-sample/% bower install bootstrap bower cloning git://github.com/twitter/bootstrap.git bower caching git://github.com/twitter/bootstrap.git bower fetching bootstrap bower checking out bootstrap#v2.2.2 bower copying /Users/chris/.bower/cache/bootstrap/c1ee45ee19795a66de4a0c45758fe0b1 bower cloning git://github.com/components/jquery.git bower cached git://github.com/components/jquery.git bower fetching jquery bower checking out jquery#1.8.3 bower copying /Users/chris/.bower/cache/jquery/cf68c4c4e7507c8d20fee7b5f26709d9 bower installing jquery#1.8.3 bower installing bootstrap#2.2.2
bootstrapは jqueryに依存しているので、先ほどの1.9.0が1.8.3に上書きされてしまいました。
~/samples/node/bower-sample/% bower list bower discover Please wait while newer package versions are being discovered /Users/chris/samples/node/bower-sample ├─┬ bootstrap#2.2.2 │ └── jquery#1.8.3 (1.9.0 now available) └── jquery#1.8.3 (1.9.0 now available)
ふむ...。モジュールの検索は bower search で。
pjaxのモジュールを探してみます。
~/samples/node/bower-sample/% bower search pjax Search results: - jquery-pjax git://github.com/defunkt/jquery-pjax.git - pjax-standalone git://github.com/thybag/PJAX-Standalone.git
2つ見つかったので、jquery-pjaxをインストール。
~/samples/node/bower-sample/% bower install jquery-pjax bower cloning git://github.com/defunkt/jquery-pjax.git bower caching git://github.com/defunkt/jquery-pjax.git bower fetching jquery-pjax bower checking out jquery-pjax#v1.3.0 bower copying /Users/chris/.bower/cache/jquery-pjax/30c8c3467630c6d00edb98b86ff40bc7 bower cloning git://github.com/components/jquery.git bower cached git://github.com/components/jquery.git bower fetching jquery bower checking out jquery#1.9.0 bower copying /Users/chris/.bower/cache/jquery/cf68c4c4e7507c8d20fee7b5f26709d9 bower installing jquery#1.9.0 bower installing jquery-pjax#1.3.0
listコマンドで各モジュールのバージョンを確認すると1.9.0になってました。
~/samples/node/bower-sample/% bower list bower discover Please wait while newer package versions are being discovered /Users/chris/samples/node/bower-sample ├─┬ bootstrap#2.2.2 │ └── jquery#1.9.0 ├── jquery#1.9.0 └─┬ jquery-pjax#1.3.0 └── jquery#1.9.0
パッケージ用のファイルを作ってnodeのpackage.jsonみたいなことができるので、一度components以下を前削除して、アプリケーションルートに、component.jsonとして以下のファイルを作成。
{ "name": "bower-sample", "version": "1.0.0", "dependencies": { "jquery" : "~1.8.3", "jquery-pjax" : "~1.3.0", "bootstrap" : "~2.2.2" } }
bower install コマンドで、component.jsonに書かれているモジュールをインストール。
~/samples/node/bower-sample/% bower install bower cloning git://github.com/defunkt/jquery-pjax.git bower cloning git://github.com/twitter/bootstrap.git bower cached git://github.com/defunkt/jquery-pjax.git bower fetching jquery-pjax bower cached git://github.com/twitter/bootstrap.git bower fetching bootstrap bower cloning git://github.com/components/jquery.git bower cached git://github.com/components/jquery.git bower fetching jquery bower checking out jquery#1.8.3 bower copying /Users/chris/.bower/cache/jquery/cf68c4c4e7507c8d20fee7b5f26709d9 bower checking out jquery-pjax#v1.3.0 bower copying /Users/chris/.bower/cache/jquery-pjax/30c8c3467630c6d00edb98b86ff40bc7 bower cloning git://github.com/components/jquery.git bower cached git://github.com/components/jquery.git bower fetching jquery bower checking out bootstrap#v2.2.2 bower copying /Users/chris/.bower/cache/bootstrap/c1ee45ee19795a66de4a0c45758fe0b1 bower checking out jquery#1.9.0 bower copying /Users/chris/.bower/cache/jquery/cf68c4c4e7507c8d20fee7b5f26709d9 bower cloning git://github.com/components/jquery.git bower cached git://github.com/components/jquery.git bower fetching jquery bower checking out jquery#1.8.3 bower copying /Users/chris/.bower/cache/jquery/cf68c4c4e7507c8d20fee7b5f26709d9 bower installing bootstrap#2.2.2 bower installing jquery#1.8.3 bower installing jquery-pjax#1.3.0
ってことは、基本的にcomponentsディレクトってアプリケーションのリポジトリには入れない方がいいのか。
で、元々やりたかったFlightのインストールも bower install flightで。
~/samples/node/bower-sample/% bower install flight bower cloning git://github.com/twitter/flight bower caching git://github.com/twitter/flight bower fetching flight bower checking out flight#v1.0.0 bower copying /Users/chris/.bower/cache/flight/1b2c3dda40d383a9303d7aa8a3f51636 bower cloning git://github.com/kriskowal/es5-shim.git bower caching git://github.com/kriskowal/es5-shim.git bower cloning git://github.com/components/jquery.git bower cached git://github.com/components/jquery.git bower fetching jquery bower checking out jquery#1.8.3 bower copying /Users/chris/.bower/cache/jquery/cf68c4c4e7507c8d20fee7b5f26709d9 bower fetching es5-shim bower checking out es5-shim#v2.0.5 bower copying /Users/chris/.bower/cache/es5-shim/a979ce4a53833f8034ece8837d071717 bower installing jquery#1.8.3 bower installing flight#1.0.0 bower installing es5-shim#2.0.5
flightについてはまた別途。
どうでもいいけど、bowerとbrewをタイポしまくって面倒だった。