dackdive's blog

新米webエンジニアによる技術ブログ。JavaScript(React), Salesforce, Python など

[Lightning]ComponentのタブをForce.com Migration Toolでデプロイする

ちょいメモ。
Lightning Component 開発において、S1 アプリで動作確認をするとき

  1. コンポーネントimplements="force:appHostable" をつける
  2. 作成 > タブ > Lightning コンポーネントタブ よりタブを作成する
  3. モバイル管理 > モバイルナビゲーション よりタブをメニュー一覧に追加する

という手間がいちいち面倒なので、Force.com Migration Tool でデプロイする際に一緒に設定できないかと思って調べてみた。

f:id:dackdive:20150325013939p:plain

(2015/04/28追記)
下に書いた方法だけではだめだった。。。
Force.com Migration Tool で新規作成したタブはそのままだとどのプロファイルでも
「タブを隠す」になっており、プロファイルの設定を行わない限り表示できない。

プロファイルもメタデータをデプロイしないといけないのか。。。

(追記ここまで)

やりかた

必要なファイルとディレクトリ構成は以下の通り。

├── aura
│   └── MyLightningComponent
│       └── MyLightningComponent.cmp
├── appMenus
│   └── Salesforce1.appMenu
├── tabs
│   └── MyLightningTab.tab (ファイル名は任意)
└── package.xml
  1. tabs ディレクトリの下に拡張子 .tab でファイルを作成する
  2. appMenus ディレクトリの下に Salesforce1.appMenu というファイルを作成する

タブ名は任意だけど、Salesforce1.appMenu というファイル名は決まっているぽい。

そして、各ファイルの中身は以下のようにする。
ここでは、タブに表示したいコンポーネント名を MyLightningComponent.cmpとする。

Lightningコンポーネントのタブをデプロイ

AuraDefinitionBundle.cmp ファイルのことなので今回の話とは無関係。

リファレンス

Salesforce Developers

おまけ

ちなみに、「フィード」のような標準タブをメタデータで指定したい場合は
type を StandardAppMenuItem とする。

<?xml version="1.0" encoding="UTF-8"?>
<AppMenu xmlns="http://soap.sforce.com/2006/04/metadata">
    <appMenuItems>
        <name>MyLightningTab</name>
        <type>CustomTab</type>
    </appMenuItems>
    <appMenuItems>
        <name>Feed</name>
        <type>StandardAppMenuItem</type>
    </appMenuItems>
</AppMenu>