amazeeio/drupal-example-baseimage

此包已被弃用,不再维护。未建议替代包。

Drupal 8 的项目模板,包含默认模块

dev-master 2019-06-12 13:32 UTC

This package is auto-updated.

Last update: 2024-08-13 01:41:51 UTC


README

amazee.io 上 Drupal 项目的 Composer 模板

此项目模板应该能为您提供使用 Composer 管理网站依赖的起点。它基于 原始 Drupal Composer 模板,但包含在 amazee.io(无论是本地开发环境还是 amazee.io 服务器)上运行所需的一切。

要求

  • docker.
  • pygmy gem install pygmy(根据您的 ruby 配置,您可能需要 sudo 执行此操作)

本地环境设置

  1. 检出项目仓库并确认路径在 docker 的文件共享配置中 - https://docs.dockerd.com.cn/docker-for-mac/#file-sharing
git clone https://github.com/amazeeio/drupal-example.git drupal8-lagoon && cd $_
  1. 确保主机机器上没有运行在端口 80 的任何内容(如 Web 服务器),然后运行 pygmy up

  2. 构建并启动构建镜像

docker-compose up -d
docker-compose exec cli composer install
  1. 访问新站点 @ http://drupal-example.docker.amazee.io
  • 如果任何步骤失败,您可以从任何点重新运行,从头开始再次运行只会重新确认更改。

模板做了什么?

在安装给定的 composer.json 时,一些任务被处理

  • 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/
  • 创建 web/sites/default/files 目录。
  • 在本地安装了最新版本的 drush,供 vendor/bin/drush 使用。
  • 在本地安装了最新版本的 Drupal Console,供 vendor/bin/drupal 使用。

更新 Drupal 核心版本

此项目将尝试保持所有 Drupal 核心文件的最新状态;使用项目 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等三路合并工具。如果您所做的更改很简单,则不需要这种设置;将所有修改保持在文件的开始或结束部分是一种保持合并容易的好策略。

常见问题解答(FAQ)

我应该提交我下载的贡献模块吗?

Composer建议提交。他们提供了反对的理由,但也提供了如果项目决定这样做的话的解决方案。

我应该提交脚手架文件吗?

drupal-scaffold插件可以将脚手架文件(如index.php、update.php等)下载到您的项目的web/目录。如果您没有修改这些文件,您可以选择不将这些文件提交到您的版本控制系统(例如git)。如果您的项目是这样的,自动在项目的每个安装或更新后运行drupal-scaffold插件可能会很方便。您可以通过在composer.json中将@drupal-scaffold注册为post-install和post-update命令来实现。

"scripts": {
    "drupal-scaffold": "DrupalComposer\\DrupalScaffold\\Plugin::scaffold",
    "post-install-cmd": [
        "@drupal-scaffold",
        "..."
    ],
    "post-update-cmd": [
        "@drupal-scaffold",
        "..."
    ]
},

我如何将补丁应用到下载的模块中?

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

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

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

denpal