この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

同期または変換時のソースの除外方法

ローカルファイルシステムと対象組織の間でメタデータを同期するとき、ソースファイルを除外する必要が生じる場合があります。同様に、ソースを Salesforce DX ソース形式に変換するとき、特定のファイルを除外する必要が生じることがあります。どちらの場合も、.forceignore ファイルを使用して個々のファイルまたはディレクトリ内のすべてのファイルを除外できます。

すべての force:source:* コマンド (force:source:pushforce:source:pullforce:source:deployforce:source:retrieve など) が実行されるとき、.forceignore ファイルによってファイルが除外されます。

.forceignore ファイルの構造

.forceignore ファイルの構造は .gitignore の構造によく似ています。.forceignore の各行には 1 つ以上のファイルに対応するパターンを指定します。通常、このファイルはメタデータコンポーネントを表しますが、LWC 設定 JSON ファイルやテストなどの除外する任意のファイルにすることができます。

.forceignore ファイルを解析する場合、force:source:* コマンドでは、.gitignore ファイルと同じルールおよびパターンを使用します。これらのルールとパターンの共通の例を次にいくつか示します。

  • ディレクトリ区切り文字には必ずスラッシュ (/) を使用します。これは、Microsoft Windows などのバックスラッシュを使用するオペレーティングシステムの場合であっても同じです。
  • アスタリスク (*) は、スラッシュ (/) を除くすべての文字に一致します。
  • パターン内の 2 つの連続する��スタリスク (**) は、パス名内の位置に応じて特別な意味を持ちます。を参照してください。
  • 読みやすさのため、.forceignore ファイルでは、空白行を区切り文字として使用します。

他にも多くのルールとパターンがあります。詳細は、git のドキュメントを参照してください。

メタデータコンポーネントの正確なファイル名の判別

.forceignore ファイルを作成するときは、除外するメタデータコンポーネントの正確な名前が必要です。特定のメタデータコンポーネントのファイル名を判別するには、次のパターンを使用します。
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.xml

source コマンドで無視されるその他のファイル

source コマンドでは、.forceignore ファイルに含まれていなくても、次のファイルが無視されます。
  • 「ドット」で開始するソースファイルまたはディレクトリ (.DS_Store.sfdx など)
  • .dup で終了するファイル
  • package2-descriptor.json
  • package2-manifest.json

ローカルソースとまだ同期されていないリモートの変更の除外

スクラッチ組織で直接変更し、その変更をローカルの DX プロジェクトに取得したくない場合があります。リモートのメタデータ変更を除外するには、メタデータソースファイルを表すエントリを .forceignore に追加します。メタデータソースファイルは、それを実際に取得すれば作成されます。

たとえば、「Dreamhouse」という名前の権限セットがある場合は、.forceignore に次のエントリを追加します。

1**/Dreamhouse.permissionset-meta.xml

MetadataWithContent Types 種別の除外

ApexClass や EmailTemplate などのコンテンツを含むメタデータコンポーネントは、MetadataWithContent 種別を拡張します。これらのコンポーネントには 2 つのソースファイルがあります。Apex コードやメールテンプレートなどのコンテンツ自体のソースファイルとそれに付随するメタデータファイルです。たとえば、HelloWorld Apex クラスのソースファイルは HelloWorld.clsHelloWorld.cls-meta.xml です。

ApexClass などの MetadataWithContent コンポーネントを除外するには、両方のソースファイルを .forceignore ファイルに指定するか、アスタリスクを使用します。次に例を示します。
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