drupal-config について
DrushとConfig Splitを使ってDrupalの設定を管理するスキルです。インポートとエクスポート、環境別設定、トラブルシューティングに加え、安全なリモート操作の方法を説明します。
主な機能
- 01アクティブ設定のエクスポートとインポート
- 02完全分割と部分分割の区別
- 03Config Splitコマンドの提示
- 04インポート時の問題解決ガイド
- 05安全なリモート確認方法
活用シーン
- 01インポート前の設定変更のプレビュー
- 02分割による環境別設定の管理
- 03エクスポートで設定が削除される問題の調査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ edutrul/ drupal-ai --skill drupal-configインストール後、Claude Code で/drupal-configを入力して読み込まれたか確認します。
同梱ファイルREADME.mdreferences/full-guide.md
詳細
Drupal 構成管理
安全性:リモートからの誤インポートを防ぐ
リモート環境の drush では、--yes がデフォルトになり、cim が自動的に承認されることがあります。常に安全なパターンを使用してください。
# SAFE — preview only
ssh user@remote "drush cim --no --diff"
ssh user@remote "drush config:get config.name"
ssh user@remote "drush config:status"
# DANGEROUS — may auto-import
ssh user@remote "drush cim --diff"
インポート/エクスポート
ddev drush cex # Export active config → YAML files
ddev drush cim # Import YAML files → active config
ddev drush cim --no --diff # Preview only (no import)
ddev drush config:status # Show pending changes (read-only)
Config Splits
完全と部分 — 重要な違い
| 種類 | 動作 | 用途 |
|---|---|---|
| 完全 | 構成はその環境にのみ存在します | モジュールの有効化/無効化(devel、stage_file_proxy) |
| 部分 | ベース構成はすべての環境に存在し、値が異なります | API キー、SMTP、検索サーバーの URL |
完全スプリット:構成は config/sync/ から削除され、config/{split}/ にのみ存在します。
部分スプリット:構成は config/sync/ に残り、オーバーライドは config/{split}/config_split.patch.*.yml に保存されます。
スプリットコマンド
ddev drush config-split:status # List splits and active state
ddev drush csex {split-name} # Export specific split
ddev drush csim {split-name} # Import specific split
ddev drush config-split:activate {name}
ddev drush config-split:deactivate {name}
スプリット定義の更新
変更は YAML ファイルだけではなく、アクティブな構成(DB)に反映する必要があります。
# Edit YAML, then import to activate
ddev drush config:import --partial
# OR set via PHP eval
ddev drush php:eval "\$c = \Drupal::configFactory()->getEditable('config_split.config_split.local'); \$c->set('partial_list', ['config.name']); \$c->save();"
ddev drush cex
トラブルシューティング
エクスポート時に構成が config/sync/ から削除される
根本原因:構成が partial_list ではなく complete_list に含まれています。
# Diagnose
grep -A10 "complete_list:" config/sync/config_split.config_split.local.yml
grep -A10 "partial_list:" config/sync/config_split.config_split.local.yml
修正方法:スプリット YAML で項目を complete_list から partial_list に移動し、インポートしてから再エクスポートしてください。
構成をインポートできない
ddev drush config:import --skip-config=system.site # Skip specific locked config
ddev drush config:import --skip-modules=config_split # Ignore splits
スプリットが有効にならない
ddev drush config-split:status
ddev drush config-split:activate {split-name}
ddev drush cex
意図 → コマンドの対応
| ユーザーの意図 | コマンド |
|---|---|
| 構成の変更をプレビューする | drush cim --no --diff |
| 構成をインポートする | drush cim |
| 構成をエクスポートする | drush cex |
関連コマンド
読み取り専用:config:get、config:status
エクスポート:cex / config:export
インポート:cim --no --diff(プレビュー)、cim(適用)
スプリット:config-split:status、csex、csim、config-split:activate
詳細
- full-guide.md — Config Split 2.0、パッチファイル、エクスポート/インポートの内部処理に関する詳細なリファレンス