| name | drupal-drush |
| description | Drush commands for Drupal — cache, config, module management, generators, field creation, and non-interactive scaffolding for AI-assisted development. |
Drush Commands
Essential Daily Commands
drush cr
drush cex -y
drush cim -y
drush updb -y
drush en module_name
drush pmu module_name
drush ws --severity=error
drush ws --severity=error --count=20
drush php:eval "code"
drush sql:dump > dump.sql
Code Generators
drush generate
drush gen module
drush generate controller
drush generate form-simple
drush generate form-config
drush generate service
drush generate plugin:block
drush generate plugin:field:formatter
drush generate plugin:field:widget
drush generate plugin:field:type
drush generate event-subscriber
drush generate hook
drush generate entity:content
drush generate entity:configuration
drush generate test:unit
drush generate test:kernel
drush generate test:browser
drush generate drush:command-file
Non-Interactive Generation (--answers JSON)
drush generate module --answers='{
"name": "My Module",
"machine_name": "my_module",
"description": "A custom module",
"package": "Custom",
"dependencies": "",
"install_file": "no",
"libraries": "no",
"permissions": "no",
"event_subscriber": "no",
"block_plugin": "no",
"controller": "no",
"settings_form": "no"
}'
drush generate service --answers='{
"module": "my_module",
"service_name": "my_module.helper",
"class": "HelperService",
"services": ["entity_type.manager", "logger.factory"]
}'
Field Management
drush field:create
drush field:create node article \
--field-name=field_subtitle \
--field-label="Subtitle" \
--field-type=string \
--field-widget=string_textfield \
--is-required=0 \
--cardinality=1
drush field:info node article
drush field:types
drush field:widgets
drush field:formatters
drush field:delete node.article.field_subtitle
Discover Generator Prompts
drush generate module -vvv --dry-run
drush generate module -y
State & Config via CLI
drush state:get my_module.last_run
drush state:set my_module.feature_enabled 1
drush state:del my_module.last_run
drush config:get my_module.settings
drush config:set my_module.settings enabled 1
drush config:edit my_module.settings
User Management
drush user:create testuser --mail="test@example.com" --password="password"
drush user:login
drush user:login --uid=2
drush user:role:add editor testuser
drush user:block testuser
drush user:unblock testuser
DDEV Wrapper
ddev drush cr
ddev drush cex -y
ddev drush generate module --answers='{...}'
ddev drush field:create node article
Debugging Generated Code
Examples assume a docroot/-based Drupal project. If your project uses web/ or another document root, adjust paths accordingly.
ddev exec php -l docroot/modules/custom/my_module/src/MyClass.php
ddev drush devel:services | grep my_module
ddev drush php:eval "class_exists('Drupal\my_module\MyClass') ? print 'Found' : print 'Not found';"