JSforce Blogで『JSforce Metadata Tools』という記事が公開されていました。
Force.com移行ツールみたいにデプロイコマンドを実行したりできるみたいです。すごく便利そうなので試してみました
Setup
次のコマンドを実行するだけでインストールできます。
$ npm install -g jsforce-metadata-tools
試しにヘルプコマンドを実行してみました。
$ jsforce-deploy --help
問題なさそうです。これで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
実行してみました。
何が起こるかなと思っていたのですが、Salesforceへ接続と同時にデプロイ処理を実行してくれました。あとはデプロイ用のファイルが用意されていれば組織にデプロイできていたと思います。『-D』はディレクトリの指定となっているみたいです。
デプロイを試す前にですが、ブログ内で次のコマンドが紹介されていました。
$ tree ./package -L 1 -F
treeコマンドはいろんな場所で見かけたのですが、ちゃんと調べたことがありませんでした。Google検索で確認してみるとhomebrewのコマンドをつかってインストールすれば使えるようになるみたいです。
$ brew install tree
こうですね。
つぎのようなディレクトリを用意すればいいみたいです。
こんな感じでしょうか。
Treeコマンドを実行すると上のサンプルと同じようになりました。
コンストラクタだけのApexクラスを用意しました。
これでデプロイコマンドを実行してみると・・・無事に一件実行されました。
Salesforce組織を確認してみると、きちんとクラスが存在しています。
こんな感じで簡単にターミナルからデプロイコマンドを実行できました。
今回は試していませんが、『-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だけ用意してから実行すればいいみたいです。
実行してみると・・・
Salesforce組織からPageやClassなどのファイルを簡単にダウンロードできました!
SublimeからRefresh from Serverを実行してダウンロードしたときと比べて短時間で実行されました。package.xmlの内容を変更することでその他のファイルや特定のファイルのみを取得したりといった制御もできるんじゃないかと思います。
JSforce Metadata Toolsすごく便利でした。
追記
package.xmlの内容を追加して試してみました。
Lightning ComponentやLabel、Tabの情報も取得できました。CustomObjectやTranslationsは取得できなそうですが、package.xmlでの指定方法こうじゃなかったかもしれません。