thunder/thunder-project

Thunder项目的Composer模板

4.1.0 2024-01-09 17:16 UTC

README

此项目模板应能帮助您使用Composer来管理网站依赖。

用法

请参阅我们的安装文档了解如何使用Thunder项目。我们还有关于如何扩展更新Thunder网站的文档。

模板做了什么?

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

  • Drupal将被安装到docroot目录中。
  • 实现了自动加载器,以使用vendor/autoload.php中生成的Composer自动加载器,而不是Drupal提供的自动加载器(docroot/vendor/autoload.php)。
  • 模块(类型为drupal-module的包)将放置在docroot/modules/contrib/
  • 主题(类型为drupal-theme的包)将放置在docroot/themes/contrib/
  • 配置文件(类型为drupal-profile的包)将放置在docroot/profiles/contrib/
  • 下载Drupal脚手架文件,如index.php.htaccess
  • 创建sites/default/files目录。
  • 将最新版本的drush安装到本地,以便在bin/drush中使用。
  • 将最新版本的DrupalConsole安装到本地,以便在bin/drupal中使用。

文件更新

此项目将尝试保持您的Thunder和drupal核心文件最新;项目drupal-composer/drupal-scaffold用于确保每次更新drupal/core时,您的脚手架文件都会更新。如果您自定义了任何“脚手架”文件(通常是 .htaccess),则在Drupal核心的新版本中更新您修改的任何文件时,您可能需要解决合并冲突。

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

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

常见问题解答

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

Composer建议提交。他们提供了论点,但同时也提供了如果项目决定这样做时的解决方案。

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

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

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

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

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

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",
        "..."
    ]
},

我该如何防止下载我不需要的Thunder模块?

要防止下载Thunder提供但您不需要的模块,请向您的composer.json添加一个replace块。

"replace": {
    "drupal/features": "*"
}

此示例阻止下载任何版本的feature模块。