LoginSignup
10
9

More than 5 years have passed since last update.

Titanium Alloy プロジェクトでの開発のお供、alloy-smelter のお誘い

Last updated at Posted at 2014-10-03

地味すぎて世間から忘れられてしまいそうな 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 で投げていただければと思います。

10
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
9