作業メモです。
非管理パッケージを作った後で、取ってきたメタデータをコピーしてあげればよいみたいですね。
CLI: プロジェクトの土台を作成
$ sfdx force:project:create --projectname sample-project
慣れないうちはレイアウトもデフォルトにしておいた方が無難でしょう。
CLI: DE組織を接続
CLI経由で、DE組織へのアクセスが行えるようにします。
$ sfdx force:auth:web:login -a de1
ブラウザが立ち上がって、Salesforceへのログインが促されるので、ログインします。
何かと使うので、組織のエイリアス de1
も指定しておきます。
DE: 非管理パッケージを作成
バージョン管理したいメタデータをコンポーネントに追加した上で、非管理パッケージをアップロードします。
とりあえず重要なのは
- パッケージ名
- どのコンポーネントをパッケージに含めるか
だけなので、それ以外はテキトーに…。
以下、パッケージ名は「pkg1」にしたことを前提としています(要:適宜読み替え)。
CLI: 非管理パッケージを取得
$ sfdx force:mdapi:retrieve -s -r ./tmp -u de1 -p pkg1
./tmp/
の下に unpackaged.zip
が落ちてくるはず。
CLI: 非管理パッケージを展開
$ unzip ./tmp/unpackaged.zip -d ./unzipped
CLI: メタデータをsfdx形式のフォーマットに変換する
$ sfdx force:mdapi:convert -r ./unzipped
コマンドリファレンスに "This command must be run in a project." とあるので、必須な処理みたいですね。
ところでこのコマンド、「一体何をしているか?」ですが、基本的には、unzipped/**/*
から force-app/main/default/**/*
への再帰的なファイルコピーのようです。
ただし単純なコピーではなく、以下のように、いくつか例外(?)があります。
package.xml
はコピーしない。これは.forceignore
が効いているせいかもしれません。- 対応するソースに
*-meta.xml
ファイルがない場合、オリジナルのファイルに-meta.xml
を付けた形でリネームする。 - Zip形式の静的リソースは展開してコピーする。
挙動から推測するより、中身を見たほうが早いかも、と思いました。