同期または変換時のソースの除外方法
すべての force:source:* コマンド (force:source:push、force:source:pull、force:source:deploy、force:source:retrieve など) が実行されるとき、.forceignore ファイルによってファイルが除外されます。
.forceignore ファイルの構造
.forceignore ファイルの構造は .gitignore の構造によく似ています。.forceignore の各行には 1 つ以上のファイルに対応するパターンを指定します。通常、このファイルはメタデータコンポーネントを表しますが、LWC 設定 JSON ファイルやテストなどの除外する任意のファイルにすることができます。
.forceignore ファイルを解析する場合、force:source:* コマンドでは、.gitignore ファイルと同じルールおよびパターンを使用します。これらのルールとパターンの共通の例を次にいくつか示します。
- ディレクトリ区切り文字には必ずスラッシュ (/) を使用します。これは、Microsoft Windows などのバックスラッシュを使用するオペレーティングシステムの場合であっても同じです。
- アスタリスク (*) は、スラッシュ (/) を除くすべての文字に一致します。
- パターン内の 2 つの連続するアスタリスク (**) は、パス名内の位置に応じて特別な意味を持ちます。例を参照してください。
- 読みやすさのため、.forceignore ファイルでは、空白行を区切り文字として使用します。
他にも多くのルールとパターンがあります。詳細は、git のドキュメントを参照してください。
メタデータコンポーネントの正確なファイル名の判別
1<component-API-name>.<md-type-file-suffix>-meta.xml- <component-API-name> は、Salesforce API で使用されるコンポーネントの一意の名前です。API 参照名には、英数字文字とアンダースコアのみを使用できます。
- <md-type-file-suffix> は、メタデータ型のファイルサフィックスです。特定のメタデータ型については、『メタデータ API 開発者ガイド』の「宣言的なメタデータファイルのサフィックスおよびディレクトリの場所」セクションを参照してください。
たとえば、API 参照名が NotUsedProfile であるプロファイルのファイル名は NotUsedProfile.profile-meta.xml です。force:source:* コマンドでこのコンポーネントを除外することを指定するには、.forceignore に次のエントリを追加します。
1**/NotUsedProfile.profile-meta.xmlソース追跡も使用している場合は、force:source:* コマンドの出力を確認してメタデータコンポーネントの正確な名前を判別するという方法もあります。たとえば、ローカルまたはリモートで変更が行われた場合、force:source:status コマンドを実行すると、変更されたコンポーネントのフルパス名が表示されます。このコマンド出力には、Dreamhouse 権限セットのファイル名と、PROJECT PATH 列に Settings カスタムタブが示されています。
1STATE FULL NAME TYPE PROJECT PATH
2────────── ─────────── ───────── ─────────────────────────────
3Local Add Settings CustomTab ./tabs/Settings.tab-meta.xml
4Local Add Dreamhouse PermissionSet ./permissionsets/Dreamhouse.permissionset-meta.xmlsource コマンドで無視されるその他のファイル
- 「ドット」で開始するソースファイルまたはディレクトリ (.DS_Store や .sfdx など)
- .dup で終了するファイル
- package2-descriptor.json
- package2-manifest.json
ローカルソースとまだ同期されていないリモートの変更の除外
スクラッチ組織で直接変更し、その変更をローカルの DX プロジェクトに取得したくない場合があります。リモートのメタデータ変更を除外するには、メタデータソースファイルを表すエントリを .forceignore に追加します。メタデータソースファイルは、それを実際に取得すれば作成されます。
たとえば、「Dreamhouse」という名前の権限セットがある場合は、.forceignore に次のエントリを追加します。
1**/Dreamhouse.permissionset-meta.xmlMetadataWithContent Types 種別の除外
ApexClass や EmailTemplate などのコンテンツを含むメタデータコンポーネントは、MetadataWithContent 種別を拡張します。これらのコンポーネントには 2 つのソースファイルがあります。Apex コードやメールテンプレートなどのコンテンツ自体のソースファイルとそれに付随するメタデータファイルです。たとえば、HelloWorld Apex クラスのソースファイルは HelloWorld.cls と HelloWorld.cls-meta.xml です。
1# Explicilty list the HelloWorld source files to be excluded
2helloWorld/main/default/HelloWorld.cls
3helloWorld/main/default/HelloWorld.cls-meta.xml
4
5# Exclude the HelloWorld Apex class using an asterisk
6helloWorld/main/default/HelloWorld.cls*バンドルおよびファイルグループの除外
1 つの .forceignore エントリのみで複数のファイルを除外するには、2 つの連続するアスタリスク (**) を使用します。
たとえば、myLwcComponent という Lightning Web コンポーネントに関連するリソースファイルをすべて除外する場合は、次のエントリを追加することにより、コンポーネントバンドル全体が除外されます。
1**/lwc/myLwcComponentすべての Apex クラスを除外するには、次のようにします。
1**/classes特殊文字を含むメタデータ
メタデータ名に特殊文字 (スラッシュ、バックスラッシュ、引用符など) が含まれる場合、すべてのオペレーティングシステムでローカルファイルシステム上のファイル名がエンコードされます。たとえば、Custom: Marketing Profile というカスタムプロファイルを取得する場合、生成されるファイル名のコロンはエンコードされます。
Custom%3A Marketing Profile.profile-meta.xml
.forceignore で特殊文字を含むファイル名を参照する場合は、エンコードされたファイル名を使用します。
.forceignore を配置する場所
.forceignore に指定するパスは、必ず .forceignore ファイルが含まれるディレクトリに対する相対パスにします。.forceignore ファイルが機能するためには、実行するコマンドに応じて適切な場所に配置する必要があります。
- force:source:* 追跡コマンドの場合、.forceignore ファイルをプロジェクトのルートに追加します。
- force:mdapi:convert の場合、ファイルをメタデータ retrieve ディレクトリ (package.xml を含む) に追加します。
サンプル構文
次は除外するソースを示すオプションです。次の例では、すべてのパスはプロジェクトルートディレクトリに対する相対パスです。
1# Specify a relative path to a directory from the project root
2helloWorld/main/default/classes
3
4# Specify a wildcard directory - any directory named “classes” is excluded
5**classes
6
7# Specify file extensions
8**.cls*
9**.pdf
10
11# Specify a specific file
12helloWorld/main/default/HelloWorld.cls*現在無視されているファイルやディレクトリのリスト
force:source:ignored コマンドを使用して、プロジェクトのファイルやディレクトリのうち、現在 force:source:* コマンドで無視されているものをリストします。force:source:ignored コマンドは .forceignore ファイルを参照して、無視されているファイルをリストアップします。
パラメータを指定せずにこのコマンドを実行すると、無視されているすべてのパッケージディレクトリにあるすべてのファイルがリストされます。--sourcepath パラメータを使用した場合は、特定のファイルまたはディレクトリのみがチェックされます。ディレクトリを指定すると、コマンドがすべてのサブディレクトリを再帰的にチェックします。
次の例では、特定のファイルが無視されているかどうかがチェックされます。
1sfdx force:source:ignored:list --sourcepath=package.xmlこの例では、特定のディレクトリ内の無視されているすべてのファイルのリストを取得します。
1sfdx force:source:ignored:list --sourcepath=force-app/main/default無視されているファイルが見つかった場合の出力例:
1Found the following ignored files:
2force-app/main/default/aura/.eslintrc.json
3force-app/main/default/lwc/.eslintrc.json
4force-app/main/default/lwc/jsconfig.json指定したファイルが見つからなかった場合の出力例:
1ERROR running force:source:ignored:list: ENOENT: no such file or directory, stat 'package.xml'ファイルが無視されていない場合の出力例:
1No ignored files found in paths:
2README.md