floe/drupal-project

Composer 模板,用于在 Pantheon 上托管并使用 Docker 进行本地开发环境的 Drupal 8 项目

8.x-dev 2017-01-25 21:42 UTC

This package is not auto-updated.

Last update: 2020-06-12 19:29:35 UTC


README

⚠️ 实验性项目

此项目模板应提供以下启动

  • 使用 Docker 管理您的本地开发环境
  • 使用 Composer 管理您的站点依赖项
  • 在 Pantheon 上托管您的站点

使用方法

首先您需要安装 dockerdocker-compose。如果在 OS X 上使用,请安装 GNU coreutils 或其他 realpath 命令的实现。

之后您可以创建项目

docker run --rm -v $(pwd):/var/www/html -v $HOME/.composer/cache:/root/.composer/cache -e COMPOSER_ALLOW_SUPERUSER=1 -e USER_UID=$(id -u) -e USER_GUID=$(id -g) drupaldocker/php:7-cli composer create-project --stability dev --ansi floe/drupal-project some-dir 8.x 

使用 docker-compose 在配置的 Docker 容器中运行应用程序

  • docker-compose run php-cli bash:进入 shell 执行 CLI 应用程序(Composer、Drush、Drupal Console 等)
  • docker-compose up web:在 Docker 容器中启动 Web 服务器,可通过 https:// 访问。

bin 目录中提供了运行在 Docker 容器中最常用命令的别名。建议在处理项目时将 bin 添加到您的 PATH 中。推荐的方法是使用 direnv

查看 docker-compose 文件以获取配置容器的详细信息。

上述 create-project 命令将所有文件的所有权传递给创建的项目。您应该创建一个新的 Git 仓库,更新 README.me 和 composer.json 文件,然后提交 .gitignore 文件排除的所有文件。

该模板做什么?

  • docker-compose.yml 文件中定义了用于在项目上工作的 Docker 容器。
  • bin 目录中提供了运行在 Docker 容器中最常用命令的别名。
  • Drupal 将安装在 web 目录中。
  • 实现了自动加载器,以在 vendor/autoload.php 中使用生成的 Composer 自动加载器,而不是 Drupal 提供的自动加载器(web/vendor/autoload.php)。
  • 模块(类型为 drupal-module 的包)将放置在 web/modules/contrib/
  • 主题(类型为 drupal-theme 的包)将放置在 web/themes/contrib/
  • 配置文件(类型为 drupal-profile 的包)将放置在 web/profiles/contrib/
  • 创建 settings.phpservices.yml 的默认可写版本。
  • 创建 sites/default/files 目录。
  • 在本地安装最新版本的 drush,以便在 vendor/bin/drush 中使用。
  • 在本地安装最新版本的 DrupalConsole,以便在 vendor/bin/drupal 中使用。

更新 Drupal 核心版本

本项目将尝试保持您的Drupal Core文件始终更新;项目drupal-composer/drupal-scaffold被用于确保每次drupal/core更新时,您的支架文件都会得到更新。如果您自定义了任何“支架”文件(通常为.htaccess),那么在Drupal核心的新版本中更新您修改的文件时,可能需要合并冲突。

按照以下步骤更新您的核心文件。

  1. 运行composer update drupal/core --with-dependencies来更新Drupal核心及其依赖项。
  2. 运行git diff以确定是否有任何支架文件已更改。检查文件以查找更改,并将对.htaccessrobots.txt的任何自定义修改恢复。
  3. 将所有内容合并到一个提交中,以便在检出分支或运行git bisect时,webcore保持同步。
  4. 如果在第2步中有非平凡冲突,您可能希望在分支上执行这些步骤,并使用git merge将更新的核心文件与您的自定义文件合并。这有助于使用kdiff3之类的三向合并工具。如果您的更改很简单,则不需要此设置;将所有更改保持在文件的开始或结尾是一个保持合并容易的好策略。

常见问题解答

如何应用下载模块的补丁?

如果您需要应用补丁(根据被修改的项目,拉取请求通常是更好的解决方案),可以使用composer-patches插件。

要将补丁添加到drupal模块foobar,在composer.json的extra部分插入patches部分。

"extra": {
    "patches": {
        "drupal/foobar": {
            "Patch description": "URL to patch"
        }
    }
}