地味すぎて世間から忘れられてしまいそうな Titanium の布教も兼ねて、先日のもくもく会に参加もできず、存在自体地味なぼくもアピールしてみようかと投稿してみました。よろしくお願いします。
さて、突然のお誘いですが、お誘いというか、ぼくみたいな方にはお勧めですので是非どうぞ。
ぼくはどうも命名がふらふらしがちで、Alloy プロジェクトで $ alloy generate controller foo
した後でも、やっぱり違うなーとコントローラ名をちょこちょこ変更しまくる癖があります。病気ですね。ただ、コントローラ名を変更すると言っても、変更するのはコントローラ、ビュー、スタイルの3つになります。毎度毎度こんなことをしていたらとても非効率ですよね。ということで、一括で簡単に変更したいなーという怠惰な理由でこのコマンドを作り始めました。普段から Titanium Studio ではなくて、コマンドラインで開発をする方にはピッタリです。
alloy-smelter は npm で提供されています。インストールは Node.jsと npm が必要ですが、Titanium をご利用な方はすでにセットアップ済みですよね。以下のコマンドでインストールすることができます。
$ npm install -g alloy-smelter
ファイル操作系
コントローラ・ビュー・スタイルを1セットに、一括で操作することができます。
コピー
$ smelter copy foo bar
もちろん深い階層のフォルダへコピーすることも可能です。
$ smelter copy foo bar/baz
移動(リネーム)
$ smelter move foo bar
$ smelter move foo bar/baz
削除
$ smelter remove foo
$ smelter remove bar/baz
生成
alloy
コマンドへそのまま渡します(controller、view、style のみ)。
$ smelter generate controller foo
また、--template
オプションを付けることにより、自身で用意したテンプレートでコントローラ・ビュー・スタイルを生成することができます。
$ smelter generate controller foo --template bar
テンプレートはホームディレクトリ直下に .smelter
が作られていますので、そちらへ予め配置しておいてください。上記の例では bar
というテンプレートが指定されていますので、以下の様な構成になります。
$HOME
└ .smelter
└ template
└ bar
├ controller.js
├ view.xml
└ style.tss
ビルド
titanium
コマンドへそのまま渡します。--titanium
オプションで渡したいオプションを指定してください。
$ smelter build --titanium '-p ios --retina --tall'
また、プリセットを用意すれば、頻繁に指定するようなオプションを予め指定することができます。プリセットは JSON で管理していますので、以下のコマンドで編集することができます。
$ smelter preset
ぼくは各シミュレータ毎に指定していたりします。最新の開発環境ではシミュレータも UDID 指定になったようで、これは是非指定しておくと良いかと思います。
{
"iPhone5s": "-p ios -C XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
"iPadAir": "-p ios -C XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
}
プリセットが用意できたら、ビルド時にプリセット名を指定してください。
$ smelter build iPhone5s
クリーン
titanium
コマンドにもクリーンはありますが、こちらは build
フォルダだけではなく Resources
も削除します。Alloy プロジェクトではなく、クラシックなプロジェクトの場合は気をつけてください。
$ smelter clean
統計
Alloy プロジェクトの統計を出力します。
$ smelter stats
┌────────────────┬─────────────────────────────────────┐
│ Category │ Summary │
├────────────────┼─────────────────────────────────────┤
│ File │ controllers: 1 │
│ │ views: 3 │
│ │ styles: 1 │
│ │ models: 1 │
├────────────────┼─────────────────────────────────────┤
│ View node │ Label: 8 │
│ │ TextField: 4 │
│ │ Window: 3 │
│ │ MenuItem: 3 │
│ │ View: 3 │
│ │ HeaderView: 2 │
│ │ ListView: 2 │
│ │ Templates: 2 │
│ │ ItemTemplate: 2 │
│ │ ListSection: 2 │
│ │ ListItem: 2 │
│ │ Menu: 1 │
│ │ NavigationWindow: 1 │
│ │ TabbedBar: 1 │
│ │ Labels: 1 │
├────────────────┼─────────────────────────────────────┤
│ Selector │ element: 9 │
│ │ id: 7 │
│ │ class: 2 │
├────────────────┼─────────────────────────────────────┤
│ Property │ height: 7 │
│ │ bottom: 6 │
│ │ width: 6 │
│ │ left: 5 │
│ │ top: 4 │
│ │ backgroundColor: 3 │
│ │ title: 3 │
│ │ right: 3 │
│ │ color: 2 │
│ │ separatorColor: 1 │
│ │ windowSoftInputMode: 1 │
│ │ paddingRight: 1 │
│ │ selectionStyle: 1 │
│ │ textAlign: 1 │
│ │ verticalAlign: 1 │
│ │ editable: 1 │
│ │ index: 1 │
│ │ hintText: 1 │
├────────────────┼─────────────────────────────────────┤
│ Color │ #fff: 1 │
│ │ #fcfcfc: 1 │
│ │ #bcbac1: 1 │
│ │ #f6f6f6: 1 │
│ │ #333: 1 │
│ │ #d9d9d9: 1 │
├────────────────┼─────────────────────────────────────┤
│ Event type │ click: 8 │
│ │ dblclick: 2 │
│ │ swipe: 2 │
│ │ return: 2 │
├────────────────┼─────────────────────────────────────┤
│ Event listener │ doToggleall: 2 │
│ │ doToggle: 2 │
│ │ doEdit: 2 │
│ │ doDelete: 2 │
│ │ doEdited: 2 │
│ │ doAll: 1 │
│ │ doActive: 1 │
│ │ doCompleted: 1 │
│ │ doTab: 1 │
└────────────────┴─────────────────────────────────────┘
さいごに
titanium
コマンドの ti
な様に smelter
コマンドは sm
がエイリアスとして登録されています。ちょっとアレな名前ですが、毎回 smelter と打つのもおっくうなので、こちらでどうぞ。
というわけで、これからもちょこちょこアップデートをしていきますので、なにか欲しい機能があれば GitHub でプルリクエストなり Issues で投げていただければと思います。