web-dev-qa-db-ja.com

構成の同期でモジュールを無効にし、composer

モジュールを無効にする際に問題が発生しました。検索しましたが、何か有用なものを見つけることができません。
-開発者Aはモジュールを無効にし、composer削除します
-私は彼の変更をプルするので、composer installを実行してコードを削除し、cimをドラッシングして構成を更新しますが、モジュールを削除しようとしているときにモジュールが見つからないと不平を言う構成。

これを行う正しい方法は何ですか? composer installを実行する前に構成をインポートできません。アンインストールされたモジュールに沿って、構成のインポートに必要な新しいモジュールが存在する可能性があるためです。

8
Francesco

そのようなものには、2つの連続したリリースが必要です。

最初のリリース:

同僚がモジュールをアンインストールし、更新された構成をコミットします。

設定でサイトを管理していない場合は、代わりにhook_update_Nを使用してください。

/**
 * Uninstall SOME_MODULE module.
 */
function MYMODULE_update_8001(&$sandbox) {

  \Drupal::service('module_installer')->uninstall(['SOME_MODULE']);
}

2回目のリリース:

モジュールはComposerを介して削除できます。


関連:

自動展開のためのDrushコマンドの順序?

6
leymannx

@leymannxに代替ソリューションを追加する-まだ2つのリリースが必要です。これは、drush cimへの言及を考慮に入れています

最初のリリース:

  1. モジュールをアンインストールしますdrush pmu module_name
  2. 構成をエクスポートします。
  3. コミット、プッシュ、リリース。
  4. drush cimをデプロイして実行します。これでモジュールがアンインストールされます。

アンインストールのハックな方法は、core.extension.ymlを直接編集し、module:キーの下からモジュールの完全なエントリを削除して、drush cimを実行することです。 注:モジュールが設定をエクスポートしないことが確実な場合にのみ、このハッキーな方法を使用してください。それ以外の場合は、例外がスローされます。

2番目のリリース:

Composerからモジュールを削除しています。

6
AjitS