これは新しい構成管理システムの簡単な使用例だと思いましたが、これを解決する方法を見つけることができませんでした。
構成をgitに保存し、drushを使用して開発中に構成をエクスポートし、展開時に構成をインポートします。 Drupal 7.で機能を元に戻すのとよく似ています。私の問題は、さまざまな統合のためにアクセスコードをgitに保存したくないことです。これにより、これらの構成が削除されます$ drush cim -y
インポート/エクスポートで除外する必要がある構成の単純なリスト/構成があることを望んでいました。ある時点であったようですが、現在利用可能であるため、再度削除された可能性がありますDrupal 8リリース。
アクティブと同期のストレンジを比較して、構成の変更がどのように行われているかを調べ、変更を削除できる場所があるかどうかを確認しましたが、そうではありませんでした。独自の構成除外がいくつかあるため、drushが構成インポートをどのように実行するかを調べましたが、これは拡張可能であるようには見えませんでした。 ConfigEvents
を確認しましたが、これらはすべてインポート後に発生するように見えるため、これを使用できるようには見えません。
何かが足りないのでしょうか、それとも単純に構成をインポート/エクスポートから除外できないのでしょうか?
具体的にexcludesを指定することはできませんが、何かあります。
Drupal 7の$ confと同じように、settings.phpに$ configがあり、ローカルで構成のすべてを上書きするために使用できます。形式は$config['name.of.config']['nested']['key']
。
構成に保存されているものはすべてgitに残っているので、何も保存しないか、テストアクセスコードをgitに保存する必要があります。また、UIには実際にconfigに保存されているものが表示され、現在、オーバーライドされていることを示すものはありません。それを改善するための保留中の問題があります。
これには制限があることを理解していますが、現在のところ、エクスポートされた構成から除外することはできません。私の知る限りでは。
「Config Ignore」モジュールを使用できます: https://www.drupal.org/project/config_ignore
Drush Cimを実行するときに、サイトの構成がファイルシステムの構成によって上書きされることを経験したことがありますか?
もう違います!
このモジュールは、必要な構成を適切な場所に維持するためのツールです。
config_ignore と config_split を組み合わせて使用できます。
構成無視では、インポート中に構成エンティティのサブセットを無視できます(2.xリリース以降の削除も防止されます)。残念ながら、それはエクスポート中に設定を除外することを妨げません。
エクスポート中に構成エンティティを除外するには、config_splitを使用して、新しいconfig_splitエンティティを作成し、フォルダーを空のままにします。これにより、構成がファイルシステムにエクスポートされなくなります。代わりに、データベースにエクスポートします。
私はこのトピックについて Drupal 8 の構成管理から構成を除外します)を書きました。
設定を分割するために https://www.drupal.org/project/config_split を使用できます。
Drupalコンソールコマンドを提供するconfig_splitを入力します。Drushの--skip-modulesフィルターによってすべてのフィルターが影響を受けた後、Drushの統合がすぐに続くでしょう。).
エクスポートをさまざまなディレクトリに分割して、gitで無視することができます。
CMIイニシアチブの担当者による非常に素晴らしい drupal con dublin 2016 でのプレゼンテーションがありましたが、何があってもチェックすることをお勧めします。
Drush CMI tools が今まで誰も言及しなかったのはなぜか不思議に思います。魔法の言葉はdrush cexy
とconfig-ignore.yml
です。調整可能なリストが表示されます。ブロックインスタンスを除外するために一度必要でしたが、同時にブロックベースが処理されました。
すべての構成をエクスポートしたいが、特定のパターンを除外したい
これが
--ignore-list
のdrush cexy
オプションの出番です。私たちのプロジェクトには./drushフォルダーがあるので、次のように、呼び出されたconfig-ignore.ymlにファイルを貼り付けます。
ignore: - field.field.contact_message.* - field.storage.contact_message.* - contact.form.* - core.entity_form_display.contact_message* - core.entity_form_display.contact_form* - core.entity_view_display.contact_message* - core.entity_view_display.contact_form* - system.site - workbench_email.workbench_email_template.*
だから今は
drush cexy
をそのように実行しますdrush cexy --destination=/path/to/config-export --ignore-list=/path/to/drush/config-ignore.yml
つまり、これはアクティブな構成をエクスポートし、無視リストを適用して不要な構成を削除することです。
したがって、
git status
を実行すると、コミットする変更のみが表示されます。
ソース: https://www.previousnext.com.au/blog/introducing-drush-cmi-tools
インストール
cd ~/.drush wget https://raw.githubusercontent.com/previousnext/drush_cmi_tools/8.x-1.x/drush_cmi_tools.drush.inc drush cc drush
config splitを使用する(推奨)
config split module は、特にこのニーズのために作成されました。
Config SplitはDrushと統合されています。
Drushのみを使用する
Drushは、--skip-modules
フラグを使用してこれを実行できるようにすることも想定されています。
プロジェクトのwebrootのdrupal/drushrc.phpに次の行を追加して、自動的に実行できます。
$command_specific['config-export']['skip-modules'] = array('devel');
$command_specific['config-import']['skip-modules'] = array('devel');
http://www.drush.org/en/master/config-exporting/#ignoring-development-modules を参照してください
悲しいことにこの機能にはバグがあります: https://github.com/drush-ops/drush/issues/182 =。したがって、現時点では、これらの構成ファイルを.gitignoreに追加して、エクスポートされた構成ファイルがコミットされないようにする必要もあります。彼らはおそらくこの(バグの多い)機能をDrushから放棄し、構成分割を支持するために進行中です。
Drupal 8.8以降は、settings.phpファイルに$settings['config_exclude_modules']
を追加することで、8.8モジュールを構成の同期から除外できるようになりました。
$settings['config_exclude_modules'] = ['devel', 'stage_file_proxy'];
変更レコードを参照 モジュールは構成の同期から除外できます 。
@berdirを#1の回答でテストしたところ、完全に実行されました。私だけが少しメモを追加します。構成全体をこの変数に完全に入力する必要があります。それがないと、$ config varが正しく実行されません。
このようなもの:
$config['language.negotiation'] = array(
'session' => array(
'parameter' => 'language',
),
'url' => array(
'source' => 'domain',
'prefixes' => array(
'es' => '',
'pt-br' => '',
),
'domains' => array(
'es' => 'YourLocalDomain',
'pt-br' => 'Anotherlocaldomain',
),
),
'selected_langcode' => 'site_default',
'langcode' => 'es',
);
ドキュメント: https://www.drupal.org/node/1928898
上記のドキュメントのメモ:「settings.php内の$ configでオーバーライドされた値は、Drupal管理インターフェイスからは表示できません。」