カスタムオブジェクトを管理するためのSFDXのベストプラクティス?
SFDX Cliを使用して、Gitリポジトリ内のカスタムオブジェクトをバージョン管理したいと思います。今のところ、SFDXは初めてで、コードベースは小さいので、単一のsfdxアプリが必要です。
現在、カスタムオブジェクトを作成し、既存のオブジェクトにタイプを追加する他のパッケージがマーケットプレイスからいくつかあります(Account
たとえば、それらは拡張されます)
これをSFDXアプリにどのようにインポートする必要がありますか?フィールドを追加したデフォルトオブジェクト(Like Account
)をインポートする必要がありますが、手動でそれらを調べて、追加したマーケットプレイスパッケージによって追加されたフィールドを削除する必要がありますか?
回答
サードパーティのAppExchangeパッケージによって追加されたメタデータコンポーネント(カスタムフィールドなど)を利用する場合、これを実現する唯一の方法は、すべてのメタデータが存在する名前空間を持つため、これらのパッケージをインストールすることです。これらを独自のソースベースで複製することはできません。
サードパーティパッケージへの依存関係は、sfdx-project.jsonにキャプチャされます。残念ながら、スクラッチ組織の作成では、依存関係が自動的にインストールされることは保証されないため(SFDX IMHOの重要な監視)、これに対処するために独自のスクリプトを作成する必要があります。完了すると、開発にSFDXを使用すると非常にうまく機能しますが、(依存するパッケージのサイズによっては)スクラッチ組織の作成にかなり時間がかかる場合があります。
個人的には、バージョン管理システムを、組織ではなく、常に真実の情報源と見なす必要があると思います。また、スクラッチ組織からメタデータをプルすることに関するsfdxの望ましくない動作のために(Salesforceによって変更されたプロファイルがいくつか表示され、これらに誤った更新をプルすることを要求します-少なくとも、それが私が見つけたものです)、 IDEでローカルではなく組織でメタデータを作成または変更する必要がある場合は、プルを使用するのではなく、明示的に取得することを検討する必要があります。
ベストプラクティスは、コード、構成、およびインストールしたパッケージに加えて行ったカスタマイズを含む、組織で構成したすべてのものをバージョン管理することです。
バージョン管理の考え方は、何らかの理由で組織のメタデータが失われた場合に備えて、ソース管理からメタデータを展開することで複製できるようにする必要があります。
サンドボックスまたは製品にアンマネージパッケージを作成することで、これを実現する最も簡単な方法です。
次の手順でこれを行うことができます
[設定]に移動します| パッケージング| パッケージマネージャー| 新しいパッケージを作成する
バージョン管理に必要なコンポーネントを追加します。依存するすべてのメタデータを自動的にプルすることに注意してください。これはとにかく他のパッケージによって生成されたメタデータを除外します。ただし、アプリをカスタマイズするために追加した追加のコンポーネントは引き続き含まれます
以下のコマンドを使用してメタデータを取得するには、SFDXCLIコマンドを使用します
sfdx force:source:retrieve -n "<packagename>"
ここで、Package Name(packagename)はパッケージの名前です。