mcpField
D
drupal-contrib-mgmt

drupal-contrib-mgmt

github.com/edutrul開発7356 回インストール22 週間前に更新
リポジトリ

drupal-contrib-mgmt について

drupal-contrib-mgmtは、Drupalのコントリビュートモジュールを保守するための実務ガイドです。Composerでの更新、Drupal 11互換性の確認、パッチの検索・適用、アップグレードのトラブル対応を扱います。

主な機能

  1. 01Composerによるモジュール更新
  2. 02Drupal 11互換性の確認
  3. 03Lenientプラグインの設定
  4. 04パッチの検索と管理
  5. 05パッチの検証と修復
  6. 06Upgrade Statusのスキャンコマンド

活用シーン

  1. 01コントリビュートモジュールの更新
  2. 02Drupal 11互換性の評価
  3. 03モジュールパッチの検索や作成
  4. 04更新やパッチ適用の失敗対応

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/edutrul/drupal-ai --skill drupal-contrib-mgmt

インストール後、Claude Code で/drupal-contrib-mgmtを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

README.md
examples/
create-custom-patch.sh
find-and-apply-patch.sh
major-version-upgrade.sh
update-with-patch.sh
references/
d11-common-deprecations.md
drupal-patches-workflow.md
issue-queue-rss-feeds.md

詳細

Drupal Contrib モジュール管理

コアの更新コマンド

composer require drupal/module_name --with-all-dependencies
composer require drupal/module_name:^3.0 --with-all-dependencies
drush updb -y && drush cr

Drupal 11 との互換性の確認

最も速い方法 — .info.yml を確認します:

cat docroot/modules/contrib/MODULE_NAME/MODULE_NAME.info.yml | grep core_version_requirement
core_version_requirement: ^9.5 || ^10 || ^11   # D11 compatible
core_version_requirement: ^9 || ^10              # Not D11 compatible
  • upgrade_status の警告は互換性がないことを意味するわけではありません — モジュールが引き続き ^11 のサポートを宣言している場合があります
  • 「手動で確認」ステータスは、誤検知であることがよくあります(実行時のバージョンチェック)

Drupal Lenient プラグイン

バージョン要件がまだ更新されていないモジュール向け:

{
  "require": { "mglaman/composer-drupal-lenient": "^1.0" },
  "config": { "allow-plugins": { "mglaman/composer-drupal-lenient": true } },
  "extra": {
    "drupal-lenient": { "allowed-list": ["drupal/module_name"] }
  }
}

パッチ管理(cweagans/composer-patches)

重要:2.x を使用してください — git apply を使用するため、信頼性があります。1.x は patch バイナリを使用するため、壊れやすいです。

{
  "require": { "cweagans/composer-patches": "^2.0" },
  "config": { "allow-plugins": { "cweagans/composer-patches": true } },
  "extra": {
    "composer-exit-on-patch-failure": true,
    "patches": {
      "drupal/module_name": {
        "Description of patch - Issue #3552531": "patches/module-fix-3552531-2.patch"
      }
    }
  }
}

2.x の注意点:ハッシュベースのキャッシュにより、再インストール後にパッチがひそかに適用されなくなることがあります。

パッチが適用されていることの確認
./scripts/verify-patches.sh        # Check all critical patches
./scripts/verify-patches.sh --fix  # Auto-reinstall affected modules

確認対象の新しいパッチを追加するには、scripts/verify-patches.sh を編集します:

CRITICAL_PATCHES=(
  "docroot/modules/contrib/MODULE:src/File.php:patternToFind:Description"
)

パッチが見つからない場合:

  1. ./scripts/verify-patches.sh を実行して特定します
  2. composer reinstall drupal/module_name または ./scripts/verify-patches.sh --fix を実行します
  3. それでも失敗する場合:composer update --lock
パッチを探す — 作成する前に検索する

最重要:カスタムパッチを書く前に、必ず drupal.org の課題キューを検索してください。

  1. 正確なエラー文字列を抽出します:例:"Unsupported operand types: array + null"
  2. 検索します:https://www.drupal.org/project/drupal/issues?text=Unsupported+operand+types+array+null
  3. .patch 添付ファイルがある RTBC(コミュニティによるレビューとテスト済み)課題を探します
  4. patches/ にダウンロードし、composer.json に追加します

パッチの命名:module-issue-NODEID-COMMENT.patch(例:audiofield-d11-3432063-12.patch)

既存のパッチが更新後に適用できなくなった場合:

  • ファイル名からノード ID を抽出 → drupal.org/node/NODEID にアクセス → 最新のコメントで更新されたパッチを探します
ローカルパッチの作成

インストール済みの vendor コピーではなく、contrib リポジトリの別のクローンから必ずパッチを作成してください。

cd ~/Sites && git clone [email protected]:project/module_name.git module_name-contrib
cd module_name-contrib && git checkout 1.0.3   # match installed version
# make changes...
git diff > ~/Sites/your-project/patches/module_name-custom-fix.patch

次に composer.json に追加し、composer reinstall drupal/module_name を実行します。

パッチの適用
composer install                       # Install with patches
composer reinstall drupal/module_name  # Re-patch a single module
composer patches-repatch               # Re-patch all patched deps

Drupal 11 非推奨項目のクイックリファレンス

非推奨置き換え
REQUEST_TIME\Drupal::time()->getRequestTime()
user_roles()\Drupal\user\Entity\Role::loadMultiple()
file_validate_extensions()file.validator サービス
_drupal_flush_css_js()AssetQueryStringInterface::reset()

Upgrade Status スキャン

drush upgrade_status:analyze --all
drush upgrade_status:analyze module1 module2
drush upgrade_status:analyze --all --ignore-contrib   # custom code only

トラブルシューティング

エラー解決策
Cannot apply patchモジュールのバージョンが変更されています — drupal.org/node/NODEID で更新されたパッチを探します
requires drupal/core ^9drupal-lenient の許可リストに追加します
patch has already been appliedパッチは上流に取り込まれています — composer.json から削除します
drush updb failsモジュールをアンインストール → 更新 → 再有効化してみてください

コメント