読者です 読者をやめる 読者になる 読者になる

tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:JSforce Metadata Toolsを試してみました

salesforce.com JSforce

JSforce Blogで『JSforce Metadata Tools』という記事が公開されていました。

Force.com移行ツールみたいにデプロイコマンドを実行したりできるみたいです。すごく便利そうなので試してみました

Setup

次のコマンドを実行するだけでインストールできます。

$ npm install -g jsforce-metadata-tools

f:id:tyoshikawa1106:20151106231218p:plain


試しにヘルプコマンドを実行してみました。

$ jsforce-deploy --help

f:id:tyoshikawa1106:20151106231416p:plain

問題なさそうです。これでSetupはうまくいきました。

Salesforce Connectとdeployコマンド

Salesforceにログインするには次のコマンドを実行すればいいみたいです。『-u』がユーザ名、『-p』がパスワードになります。

$ jsforce-deploy -u username@example.org -p password123 -D ./package


また、マイドメインを有効化していたり本番とSandbox環境を切り替えたい場合は次のようにオプションを指定します。

$ jsforce-deploy -u username@example.org -p password123 -l https://mydomain.my.salesforce.com -D ./package


実行してみました。
f:id:tyoshikawa1106:20151106235421p:plain


何が起こるかなと思っていたのですが、Salesforceへ接続と同時にデプロイ処理を実行してくれました。あとはデプロイ用のファイルが用意されていれば組織にデプロイできていたと思います。『-D』はディレクトリの指定となっているみたいです。


デプロイを試す前にですが、ブログ内で次のコマンドが紹介されていました。

$ tree ./package -L 1 -F


treeコマンドはいろんな場所で見かけたのですが、ちゃんと調べたことがありませんでした。Google検索で確認してみるとhomebrewのコマンドをつかってインストールすれば使えるようになるみたいです。

$ brew install tree


こうですね。
f:id:tyoshikawa1106:20151106232954p:plain


つぎのようなディレクトリを用意すればいいみたいです。
f:id:tyoshikawa1106:20151106233255p:plain


こんな感じでしょうか。
f:id:tyoshikawa1106:20151106233723p:plain


Treeコマンドを実行すると上のサンプルと同じようになりました。
f:id:tyoshikawa1106:20151106233830p:plain


コンストラクタだけのApexクラスを用意しました。
f:id:tyoshikawa1106:20151106234350p:plain


これでデプロイコマンドを実行してみると・・・無事に一件実行されました。
f:id:tyoshikawa1106:20151106234742p:plain


Salesforce組織を確認してみると、きちんとクラスが存在しています。
f:id:tyoshikawa1106:20151106234936p:plain


こんな感じで簡単にターミナルからデプロイコマンドを実行できました。


今回は試していませんが、『-Z』オプションをつかってZipファイルでも実行できるみたいです。

$ jsforce-deploy -c username@example.org -Z ./package.zip

Retrieveコマンド

もうひとつ気になるコマンドがありました。Retrieveコマンドです。

$ jsforce-retrieve -u username@example.org -p password123 -D ./package


今度はpackage.xmlだけ用意してから実行すればいいみたいです。
f:id:tyoshikawa1106:20151106235841p:plain


実行してみると・・・
f:id:tyoshikawa1106:20151107000854p:plain


Salesforce組織からPageやClassなどのファイルを簡単にダウンロードできました!
f:id:tyoshikawa1106:20151107001101p:plain


SublimeからRefresh from Serverを実行してダウンロードしたときと比べて短時間で実行されました。package.xmlの内容を変更することでその他のファイルや特定のファイルのみを取得したりといった制御もできるんじゃないかと思います。


JSforce Metadata Toolsすごく便利でした。

追記

package.xmlの内容を追加して試してみました。
f:id:tyoshikawa1106:20151107003418p:plain

package.xml · GitHub

Lightning ComponentやLabel、Tabの情報も取得できました。CustomObjectやTranslationsは取得できなそうですが、package.xmlでの指定方法こうじゃなかったかもしれません。
f:id:tyoshikawa1106:20151107003834p:plain