一昨日からExpressのCSRF対策に頭を悩ませておりまして。本日は気分転換でExpressに変わるかもしれない Tower.jsを試してみます。
Tower.js。その名前の通り、すべてがそろったパッケージであります。Scaffold、Bootstrap2、Stylus、MongoDb、CoffeeScript, etc,etc,etc....。npmでインストールされるパッケージ数たるや「東京スカイツリー」であり、アーキテクチャの完成度たるや「エッフェル塔」のような美しさなのであります。
見る?というか見上げる?
$ npm ls npm WARN node-uuid@1.2.0 dependencies field should be hash of <name>:<version-range> pairs tower_sample@0.0.1 /Users/inouetomoyuki/Dropbox/Projects/node/tower_sample ├── async@0.1.18 ├── chai@0.4.2 ├── coffee-resque@0.1.4 ├── coffee-script@1.2.0 ├─┬ design.io@0.3.0-6 │ ├── commander@0.5.2 │ ├─┬ connect@2.0.2 │ │ ├── debug@0.5.0 │ │ ├── formidable@1.0.9 │ │ ├── mime@1.2.4 │ │ └── qs@0.4.2 │ ├─┬ express@2.5.8 │ │ ├─┬ connect@1.8.5 │ │ │ └── formidable@1.0.9 │ │ ├── mime@1.2.4 │ │ ├── mkdirp@0.3.0 │ │ └── qs@0.4.2 │ ├── findit@0.1.2 │ ├─┬ hook.io@0.8.7-1 │ │ ├── colors@0.6.0-1 │ │ ├── dnode-protocol@0.1.1 │ │ ├── eventemitter2@0.4.8 │ │ ├── jsonify@0.0.0 │ │ ├── lazy@1.0.8 │ │ ├── mdns@0.0.5 │ │ ├── mkdirp@0.2.2 │ │ ├─┬ nconf@0.3.1 │ │ │ └── ini@1.0.2 │ │ ├─┬ npm@1.0.106 │ │ │ ├── abbrev@1.0.3 │ │ │ ├── graceful-fs@1.0.1 │ │ │ ├── ini@1.0.1 │ │ │ ├─┬ minimatch@0.0.4 │ │ │ │ └── lru-cache@1.0.4 │ │ │ ├── node-uuid@1.2.0 │ │ │ ├── nopt@1.0.10 │ │ │ ├── proto-list@1.0.0 │ │ │ ├── request@2.1.1 │ │ │ ├── rimraf@1.0.8 │ │ │ ├── semver@1.0.11 │ │ │ ├── slide@1.1.3 │ │ │ └── which@1.0.2 │ │ ├─┬ optimist@0.2.8 │ │ │ └── wordwrap@0.0.2 │ │ ├── pkginfo@0.2.3 │ │ ├─┬ portfinder@0.2.1 │ │ │ └── mkdirp@0.0.7 │ │ ├── prompt@0.1.12 │ │ ├── semver@1.0.13 │ │ ├─┬ socket.io@0.8.6 │ │ │ ├── policyfile@0.0.4 │ │ │ └── redis@0.6.7 │ │ ├─┬ socket.io-client@0.8.6 │ │ │ ├── uglify-js@1.0.6 │ │ │ ├── websocket-client@1.0.0 │ │ │ └── xmlhttprequest@1.2.2 │ │ ├── traverse@0.5.2 │ │ ├── weak@0.1.5 │ │ └─┬ winston@0.5.10 │ │ ├── eyes@0.1.7 │ │ ├─┬ loggly@0.3.11 │ │ │ ├── request@2.9.153 │ │ │ └── timespan@2.2.0 │ │ └── stack-trace@0.0.6 │ ├── node-uuid@1.3.3 │ ├─┬ seq@0.3.5 │ │ ├─┬ chainsaw@0.0.9 │ │ │ └── traverse@0.3.9 │ │ └─┬ hashish@0.0.4 │ │ └── traverse@0.6.0 │ ├─┬ socket.io@0.9.0 │ │ ├── policyfile@0.0.4 │ │ ├── redis@0.6.7 │ │ └─┬ socket.io-client@0.9.0 │ │ ├─┬ ws@0.4.0 │ │ │ ├── commander@0.5.0 │ │ │ └── options@0.0.2 │ │ └── xmlhttprequest@1.2.2 │ └── underscore.logger@0.3.1 ├── design.io-javascripts@0.3.0-1 ├── design.io-stylesheets@0.3.0-2 ├─┬ forever@0.8.5 │ ├─┬ broadway@0.1.13 │ │ ├── colors@0.6.0-1 │ │ ├── eventemitter2@0.4.8 │ │ └─┬ optimist@0.3.1 │ │ └── wordwrap@0.0.2 │ ├─┬ cliff@0.1.7 │ │ ├── colors@0.6.0-1 │ │ └── eyes@0.1.7 │ ├── daemon@0.4.1 │ ├─┬ flatiron@0.1.14 │ │ ├── director@1.0.9-1 │ │ ├─┬ optimist@0.3.1 │ │ │ └── wordwrap@0.0.2 │ │ └─┬ prompt@0.1.12 │ │ └── colors@0.6.0-1 │ ├── microtime@0.2.0 │ ├─┬ minimatch@0.0.5 │ │ └── lru-cache@1.0.5 │ ├─┬ nconf@0.5.1 │ │ ├── ini@1.0.2 │ │ └─┬ optimist@0.3.1 │ │ └── wordwrap@0.0.2 │ ├── node-fork@0.4.2 │ ├─┬ nssocket@0.3.7 │ │ ├── eventemitter2@0.4.8 │ │ └── lazy@1.0.8 │ ├─┬ optimist@0.2.8 │ │ └── wordwrap@0.0.2 │ ├── pkginfo@0.2.3 │ ├─┬ portfinder@0.2.1 │ │ └── mkdirp@0.0.7 │ ├─┬ ps-tree@0.0.2 │ │ └─┬ parse-table@0.0.0 │ │ └── event-stream@0.5.3 │ ├── timespan@2.0.1 │ ├─┬ utile@0.0.10 │ │ ├── mkdirp@0.3.0 │ │ ├── ncp@0.2.5 │ │ └── rimraf@1.0.9 │ ├── watch@0.5.0 │ └─┬ winston@0.5.10 │ ├── colors@0.6.0-1 │ ├── eyes@0.1.7 │ ├─┬ loggly@0.3.11 │ │ └── request@2.9.153 │ └── stack-trace@0.0.6 ├── gzip@0.1.0 ├── knox@0.0.9 ├── less@1.2.2 ├── mint@0.3.0 ├─┬ mocha@0.14.1 │ ├── commander@0.5.2 │ ├── debug@0.5.0 │ ├── diff@1.0.2 │ ├── growl@1.5.0 │ └─┬ jade@0.20.3 │ └── mkdirp@0.3.0 ├── mongodb@0.9.9-4 ├─┬ pathfinder@0.3.0-1 │ ├── detective@0.1.0 │ ├─┬ findit@0.1.2 │ │ └─┬ seq@0.3.5 │ │ ├─┬ chainsaw@0.0.9 │ │ │ └── traverse@0.3.9 │ │ └─┬ hashish@0.0.4 │ │ └── traverse@0.6.0 │ ├── mime@1.2.5 │ └── mkdirp@0.3.0 ├── redis@0.7.1 ├── sinon@1.3.1 ├─┬ stylus@0.24.0 │ ├── cssom@0.2.2 │ ├── debug@0.5.0 │ ├── growl@1.4.1 │ └── mkdirp@0.3.0 ├─┬ tower@0.3.9-9 │ ├── URIjs@1.4.2 │ ├── coffeekup@0.3.1 │ ├── commander@0.5.2 │ ├─┬ connect@2.0.2 │ │ ├── debug@0.5.0 │ │ ├── formidable@1.0.9 │ │ └── mime@1.2.4 │ ├── ejs@0.6.1 │ ├─┬ express@2.5.8 │ │ ├─┬ connect@1.8.5 │ │ │ └── formidable@1.0.9 │ │ ├── mime@1.2.4 │ │ └── mkdirp@0.3.0 │ ├── lingo@0.0.4 │ ├── mime@1.2.5 │ ├── moment@1.4.0 │ ├── node-uuid@1.3.3 │ ├── qs@0.4.2 │ ├── restler@2.0.0 │ ├─┬ socket.io@0.9.0 │ │ ├── policyfile@0.0.4 │ │ ├── redis@0.6.7 │ │ └─┬ socket.io-client@0.9.0 │ │ ├─┬ ws@0.4.0 │ │ │ ├── commander@0.5.0 │ │ │ └── options@0.0.2 │ │ └── xmlhttprequest@1.2.2 │ ├── underscore.logger@0.3.1 │ └─┬ useragent@1.0.5 │ ├── request@2.2.9 │ ├── semver@1.0.12 │ └── yamlparser@0.0.2 ├── uglify-js@1.2.5 ├── underscore@1.3.1 └── underscore.string@2.0.0
どーん!
その数、依存パッケージをあわせて 194 個。容量は54MB。
さっそくコマンドから
インストール。ドーン。 $ npm install -g tower プロジェクト作成。 $ tower new tower_sample $ cd tower_sample/ $ npm install ちょっとエラー出るので、sudo使う。 $ sudo npm install design.io scaffold!すばらしい! $ tower generate scaffold Post title:string body:test blongsTo:user $ tower generate scaffold User email:string fisrtName:string lastName:string hasMany:posts 起動! $ node server.js デバッグ。ドーン。 info - socket.io started [Wed, 07 Mar 2012 13:34:56 GMT] INFO Tower development server listening on port 3000 info: Name: design.io-watcher::tower_sample hook::listening Type: hook Data: 5000 info: Name: design.io-watcher::tower_sample hook::started Type: hook Data: 5000 info: Name: design.io-watcher::tower_sample hook::ready Type: hook Data: {"name":"design.io-watcher::tower_sample","type":" ... info: Name: design.io-watcher::tower_sample ready Type: hook Data: {"name":"design.io-watcher::tower_sample","type":" ... [Wed, 07 Mar 2012 13:35:01 GMT] INFO updated public/javascripts/vendor/javascripts/async.js [Wed, 07 Mar 2012 13:35:01 GMT] INFO updated public/javascripts/vendor/javascripts/coffeekup.js [Wed, 07 Mar 2012 13:35:01 GMT] INFO updated public/javascripts/vendor/javascripts/design.io.js [Wed, 07 Mar 2012 13:35:01 GMT] INFO updated public/javascripts/vendor/javascripts/history.adapter.jquery.js [Wed, 07 Mar 2012 13:35:01 GMT] INFO updated public/javascripts/vendor/javascripts/history.js [Wed, 07 Mar 2012 13:35:01 GMT] INFO updated public/javascripts/vendor/javascripts/html5.js [Wed, 07 Mar 2012 13:35:01 GMT] INFO updated public/javascripts/vendor/javascripts/mocha.js [Wed, 07 Mar 2012 13:35:01 GMT] INFO updated public/javascripts/vendor/javascripts/moment.js [Wed, 07 Mar 2012 13:35:01 GMT] INFO updated public/javascripts/vendor/javascripts/prettify.js [Wed, 07 Mar 2012 13:35:01 GMT] INFO updated public/javascripts/vendor/javascripts/sinon.js [Wed, 07 Mar 2012 13:35:01 GMT] INFO updated public/javascripts/vendor/javascripts/socket.io.js (たくさん)
トップ
俺の名前をなぜ知っている。。。神か?
リスト
入力
圧巻の一言。ついにきたな、と。
ボク、まだコード書いてないよ。
これからはTower.jsで幸せになれるかもしれません。まる。
0 件のコメント:
コメントを投稿