pronovix/drupal-project

适用于使用composer的Drupal 8项目的模板

维护者

详细信息

github.com/Pronovix/drupal-project

安装: 9

依赖者: 0

建议者: 0

安全: 0

星星: 0

关注者: 8

分支: 941

类型:项目

8.x-dev 2017-11-20 12:31 UTC

README

此模板是drupal-composer的分支,同时包含Drupal VM作为git子模块。

有关这些项目的更多信息,请查看项目页面。

要求

  • 在主机机器上安装(最新稳定版)Virtualbox
  • 在主机机器上安装Vagrant及其一些插件
    • vagrant plugin install vagrant-hostsupdater
    • vagrant plugin install vagrant-auto_network
    • vagrant plugin install vagrant-vbguest
    • vagrant plugin install vagrant-cachier

注意事项

  • Composer会安装以下文件(这些文件不应该被提交)
    • Drupal核心(最新稳定版drupal-8.x.x)位于docroot/文件夹中
    • Drupal库和贡献模块/profiles/themes位于docroot/文件夹中
    • PHP库位于vendor/文件夹中
    • PHP库的二进制文件位于bin/文件夹中
  • 由于gitroot将被NFS挂载到VM中,对其中文件的任何更改都将在此处可用。
  • 您可以使用XDebug。
  • 您可以使用vagrant ssh连接到正在运行的Vagrant机器。
  • 您可以在./config/config.yml文件的npm_package_json_paths变量中指定package.json文件的路径,以在设置时安装node.js包。
  • 您可以通过在./config/config.yml中指定browsersync_portbrowsersync_config_target变量,轻松在VM中启用Browsersync。如果您想全局使用它,只需将其添加到全局安装的Node.js包中。如果您想通过Gulp(或Grunt)使用它,您可以从生成的browsersync.config.json文件中包含必要的设置到gulpfile.js中。在浏览器中访问vagrant_hostname:browsersync_port(例如http://pxproject.test:8080)以访问Browsersync服务器。

处理现有项目

  1. 克隆项目git clone some-project --recursive(需要使用--recursive开关以克隆Drupal VM)。
  2. 启动VM:vagrant up
  3. 对于添加自定义/贡献模块或补丁,请遵循以下说明。

创建新项目

  1. 克隆此存储库:git clone https://github.com/Pronovix/drupal-project.git . --recursive
  2. 根据您的项目更新/config/config.yml中的vagrant_hostnamevagrant_machine_name(这两个必须在您的主机上唯一)
  3. 启动VM:vagrant up
  • 由于第一次在主机上执行需要下载大约700MB(或更多)的基础镜像,因此这需要相当长的时间。之后,设置(新的)VM通常只需要5-15分钟,具体取决于其配置(要安装的包的数量、Drupal模块的数量、composer与带宽等)。
  1. 对于添加自定义/贡献模块或补丁,请遵循以下说明。

注意

  • 默认情况下,.htaccessrobots.txt文件由drupal-scaffold忽略(因此它们会被更新而不是被覆盖),并且它们被提交到存储库以确保它们存在于文件系统中。
  • 支架文件(除了.htaccessrobots.txt之外)和其他不应提交到Drupal项目中的文件(例如settings.php)默认位于.gitignore文件中。

添加新的贡献模块

  1. 使用vagrant ssh连接到机器
  2. 在VM中运行composer require drupal/some_module --no-interaction --prefer-dist -o
  • some_module模块添加到docroot/modules/contrib/目录下(根据pronovix/drupal-project的composer.json文件)
  • 将此模块依赖的 contrib 模块添加到同一目录下(根据some_module.info.yml文件)
  • 将此模块依赖的 PHP 库添加到vendor/目录下(根据模块自身的composer.json文件)
  • 自动加载器将被优化(因为使用了-o选项)
  1. 将 Composer 文件添加到 git 中:git add composer.json composer.lock
  • 请不要添加代码本身,因为它应该由 Composer 自动构建
  • Pronovix/drupal-project不应该包含composer.lock,因为它是为其他/真实项目准备的骨架
  • 其他/真实项目必须提交composer.lock,因为这是确保在任何环境中构建相同的代码库的唯一方法
  1. 提交这些文件:git commit -m "提交信息."

添加 contrib 子模块(不要这样做)

如果您不知道在drupal.org上提供您想要的特定(子)模块的项目机器名?没问题,drupal.org的Composer仓库可以为您解决

  1. 在虚拟机中:composer require drupal/admin_toolbar_tools --no-interaction --prefer-dist -o
  • 然而,这种方法不建议使用,因为子模块是添加到composer.json中的,而不是drupal.org项目,这可能会造成混淆。上面的命令将显示类似“安装drupal/admin_toolbar (1.19.0)”的信息,这是drupal.org项目的机器名 - 我们就坚持这个吧。
  1. git reset --hard
  2. composer require drupal/admin_toolbar --no-interaction --prefer-dist -o
  • 嗯,该模块已经是基础包的一部分了,但无论如何 :)
  1. git add composer.json composer.lock
  2. git commit -m "添加新的 contrib 模块:admin_toolbar.module."

添加新的自定义模块

  1. 将其复制到docroot/modules/custom/目录中。
  2. 确保其composer.json具有适当的类型信息:"type": "drupal-custom-module"
  3. 将模块添加到 git 中:git add modules/custom/custom_module(自定义模块应该提交到仓库)
  4. 提交模块:git commit -m "添加新的自定义模块:custom_module."

应用核心或任何 contrib 模块的补丁

  1. 在您的composer.json中的extra部分添加一个patches部分(如果尚未添加),为每个您想要修补的项目;每个 Drupal 项目应有一个独立的部分,每个补丁应有一行(在项目部分内)。所以您的composer.json最后看起来像这样
"extra": {
    "installer-paths": {
        "docroot/core": ["type:drupal-core"],
        "docroot/libraries/{$name}": ["type:drupal-library"],
        "docroot/modules/contrib/{$name}": ["type:drupal-module"],
        "docroot/profiles/contrib/{$name}": ["type:drupal-profile"],
        "docroot/themes/contrib/{$name}": ["type:drupal-theme"],
        "drush/contrib/{$name}": ["type:drupal-drush"]
    },
    "patches": {
        "drupal/core": {
            "Use ROW_FORMAT=dynamic with InnoDB [#2857359]": "https://www.drupal.org/files/issues/row_format_dynamic_innodb_0.patch"
        },
        "drupal/node_clone": {
            "Configurations cannot be changed and publishing options missing [#2724919]": "https://www.drupal.org/files/issues/fix_set_data_on_admin_page-2724919-2.patch",
            "Warning: Invalid argument supplied for foreach() [#2712079]": "https://www.drupal.org/files/issues/update_settings_and_schema-2712079-3.patch"
        }
    }
}
  1. 在虚拟机中运行composer install以应用补丁。

编写测试

将您的测试放入features目录。然后运行vagrant sshcd .. && bin/behat。如果您需要特别准备好的数据库来运行测试,请将转储文件复制到docroot/mock.sql

致谢

这基本上是Proudly Found Elsewhere