Skip to content

Latest commit

 

History

History
117 lines (78 loc) · 5.58 KB

README.md

File metadata and controls

117 lines (78 loc) · 5.58 KB

tests project is maintained

DDEV Drupal Contrib

DDEV integration for developing Drupal contrib projects. As a general philosophy, your contributed module is the center of the universe. The codebase layout (see image below) and commands in this project match the Gitlab CI approach from the Drupal Association.

Install

  1. If you haven't already, install Docker and DDEV
  2. git clone your contrib module
  3. cd [contrib module directory]
  4. Configure DDEV for Drupal using ddev config --project-name=[contrib module] --project-type=drupal --docroot=web --php-version=8.2 or select these options when prompted using ddev config
    • Remove underscores in the project name, or replace with hyphens.
    • See Misc for help on using alternate versions of Drupal core.
  5. Run ddev get ddev/ddev-drupal-contrib
  6. Run ddev start
  7. Run ddev poser
  8. Run ddev symlink-project

Update

Update by running the ddev get ddev/ddev-drupal-contrib command.

Commands

This project provides the following DDEV container commands.

  • ddev poser.
    • Creates a temporary composer.contrib.json so that drupal/core-recommended becomes a dev dependency. This way the composer.json from the module is untouched.
    • Runs composer install AND yarn install so that dependencies are available.
    • Note: it is perfectly acceptable to skip this command and edit the require-dev of composer.json by hand.
  • ddev symlink-project. This symlinks the top level files of your project into web/modules/custom so that Drupal finds your module. This command runs automatically on every ddev start. See codebase image below.

Run tests on the web/modules/custom directory:

Codebase layout

Folder tree

Misc

web_environment:
  - DRUPAL_CORE=^9

This adds the value as a constraint of drupal/core-recommended to the generated composer.json.

  • If you add/remove a root file or directory, re-symlink root files via EITHER of these methods
    • ddev restart
    • ddev symlink-project
  • cweagans/composer-patches:^1 is added by ddev poser so feel free to configure any patches that your project needs.
  • Any development dependencies (e.g. Drush) should be manually added to require-dev in your project's composer.json file. Don't use the composer require command to do that.

Example of successful test

This is what a successful test looks like, based on Config Enforce Devel.

user:~/config_enforce_devel$ ddev phpunit
PHPUnit 9.6.15 by Sebastian Bergmann and contributors.

Default Target Module (Drupal\Tests\config_enforce_devel\Functional\DefaultTargetModule)
 ✔ Default target module created

Form Alter Implementation Order (Drupal\Tests\config_enforce_devel\Functional\FormAlterImplementationOrder)
 ✔ Form alter implementation order

Theme Settings Form (Drupal\Tests\config_enforce_devel\Functional\ThemeSettingsForm)
 ✔ Theme settings form submit

Time: 00:13.453, Memory: 4.00 MB

OK (3 tests, 20 assertions)

Automatically correct coding standard violations

You can set up a pre-commit hook that runs phpcbf:

  1. Create a new file touch .git/hooks/pre-commit in your repository if it doesn't already exist.
  2. Add the following lines to the pre-commit file:
#!/bin/bash

ddev phpcbf -q
  1. Mark the file as executable: chmod +x pre-commit.

Troubleshooting

"Error: unknown command":

The commands from this addon are available when the project type is drupal. Make sure the type configuration is correctly set in .ddev/config.yaml:

type: drupal

Don't forget to run ddev restart if .ddev/config.yaml has been updated.

Contributed and maintained by @weitzman