nuvoleweb/drupal-component-scaffold

Drupal模块和主题的Composer插件脚手架。

0.1.0 2017-10-09 20:31 UTC

This package is auto-updated.

Last update: 2024-09-11 14:43:26 UTC


README

Build Status

Drupal组件脚手架 是一个 Composer插件,它帮助Drupal 8项目维护者享受更精简的开发工作流程:在模块和主题上的工作将像在处理任何其他现代PHP组件一样。

一旦安装了此插件,就可以

  • require-dev 中指定所有项目的开发依赖项,如Drupal核心、模块、主题或任何需要的测试库(PHPUnit、PHPSpec、Behat等)。 这里有一个示例
  • 通过运行 composer install,在项目目录内构建一个功能齐全的Drupal站点,只需捆绑列出的所有依赖项即可。
  • 在本地开发和持续集成管道上拥有相同的设置。这也导致了 更干净的CI配置文件

该插件利用了优秀的 Drupal Scaffold 项目,并在其主要脚手架任务运行后(如果运行)触发。

用法

如下通过Composer要求

$ composer require nuvoleweb/drupal-component-scaffold --dev

列出所有依赖项(核心版本、模块等)并运行

$ composer update

例如,以下 composer.json

{
  "name": "drupal/my_module",
  "type": "drupal-module",
  "require": {
    "drupal/ds": "~3"
  },
  "require-dev": {
    "nuvoleweb/drupal-component-scaffold": "*",
    "drush/drush": "~8.0",
    "drupal/core": "~8",
    "drupal/panels": "~4",
  },
  "repositories": [
    {
      "type": "composer",
      "url": "https://packages.drupal.org/8"
    }
  ],
  "extra": {
    "installer-paths": {
      "web/core": ["type:drupal-core"],
      "web/modules/contrib/{$name}": ["type:drupal-module"]
    }
  }  
}

运行 composer install 将导致

.
├── web
│   ├── autoload.php
│   ├── core
│   ├── modules
│   │   ├── contrib
│   │   │    └── panels
│   │   └── custom
│   │       └── my_module (symlink to project root)
│   └── sites
│       ├── default
│       │   ├── default.services.yml
│       │   ├── default.settings.php
│       │   ├── drushrc.php
│       │   └── settings.local.php
│       ├── development.services.yml
│       ├── example.settings.local.php
│       └── example.sites.php
├── vendor
├── composer.json
├── composer.lock
├── my_module.info.yml
└── my_module.module

配置

构建目录将由 installer-paths 派生,请确保您已指定希望安装核心、模块等的路径

{
  "extra": {
    "installer-paths": {
      "web/core": ["type:drupal-core"],
      "web/modules/contrib/{$name}": ["type:drupal-module"]
    }
  }
}

此外,所有 Drupal Scaffold 选项仍然适用,更多内容请参阅项目文档。

可以通过运行以下命令在任何时候触发组件脚手架

$ composer drupal-component-scaffold

设置PHPUnit测试

要设置 PHPUnit,请使用以下 phpunit.xml.dist 模板

<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="vendor/autoload.php" backupGlobals="true" colors="true" >
  <php>
    <ini name="error_reporting" value="32767"/>
    <var name="namespaces" value=""/>
    <ini name="memory_limit" value="-1"/>
    <env name="SIMPLETEST_DB" value="mysql://user:pass@host/database"/>
  </php>
  <testsuites>
    <testsuite>
      <directory>./tests/</directory>
    </testsuite>
  </testsuites>
</phpunit>

这将确保单元和内核 测试能够正确运行。 这里有一个示例

内部工作原理

当触发时,该插件将

在Drupal Scaffold完成后,插件将

  • ./web/modules/custom 下准备一个自定义项目目录。
  • 使 ./web/sites/default 可写。
  • ./web/modules/custom/my_module(或 ./web/themes/custom/my_theme)下创建您的项目的符号链接。
  • ./web/sites/default/drushrc.php 下设置默认Drush配置文件。
  • 确保在 ./web/sites/development.services.yml 中禁用Twig缓存。
  • ./web/sites/default/settings.local.php 中设置本地开发设置。
  • 使用 kernel-test-base.patch 修补Drupal核心,以便内核测试可以顺利运行。

注意:上面的本地开发设置文件默认禁用,要启用它,请在您的 settings.php 文件中取消注释相关行并清除缓存。