imagex / recipe-base
Base installation for Imagex.
Package info
Type:drupal-recipe
pkg:composer/imagex/recipe-base
This package is auto-updated.
Last update: 2026-08-04 16:14:13 UTC
README
Foundational Drupal installation for ImageX builds: core roles, the "basic" custom block type, the default Page content type, navigation, and baseline site settings that recipe-standard and recipe-layout build on top of.
Recipes Included
core/recipes/basic_block_typecore/recipes/page_content_typecore/recipes/core_recommended_performancecore/recipes/administrator_rolecore/recipes/content_editor_rolecore/recipes/restricted_html_format
Modules Installed
- CKEditor 5 (core)
- Configuration Manager (core)
- Contextual Links (core)
- Datetime (core)
- Field UI (core)
- Image (core)
- Custom Menu Links (core)
- Menu UI (core)
- Navigation (core)
- Options (core)
- Stark (core, theme)
- Views UI (core)
Configuration Highlights
- Sets the site's front page to
/nodeand enables the admin theme for content editing. - Imports the core Navigation module's config, plus the Archive, Content, and Frontpage admin views and the People view.
- Configures user registration to require admin approval and a verified email, and sets the account cancellation method to disable-and-keep-content.
- Sets
is_admin: falseon theadministratorrole and grants it explicit permissions (includingbypass node access) instead of relying on Drupal's implicit "is_admin bypasses everything" behavior, so admin access stays auditable. - Grants
content_editorandadministratorthe "basic" custom block permissions, plus baseline permissions for accessing site administration, content overview, and navigation. - Grants
content_editorcreate/edit/delete/revert/view permissions for every node content type viagrantPermissionsForEachNodeType. - Grants baseline
access contentto anonymous and authenticated users.
A gotcha with grantPermissionsForEachNodeType
This action only generates permissions for node types that exist at the moment recipe-base is applied — it is not a standing rule that automatically covers content types added later by other recipes. For example, recipe-layout defines its own landing_page content type; content_editor's create/edit/delete permissions for landing_page are not covered by this recipe and had to be granted explicitly in recipe-layout/recipe.yml instead. Keep this in mind if a downstream recipe adds a new content type and assumes editorial permissions "just work."
Installation
Add the recipe to a project with Composer:
composer require imagex/recipe-base
Then apply it:
drush recipe:apply recipes/recipe-base
Notes
Unlike recipe-standard and recipe-layout, this recipe uses strict: true (Drupal's default) — every piece of configuration it ships must match the site's active configuration exactly, or applying it throws RecipePreExistingConfigException. It's meant to be the first recipe applied to a fresh site, not reapplied on top of an already-configured one.