hn/typo3-bootstrap

typo3项目初始设置


README

这是hauptsache.net网站大多数TYPO3项目的基座,因此包含了一些针对我们和我们的托管服务的特定假设。然而:您仍然可能对查看设置TYPO3项目的一种可能方式感兴趣。

本地安装

在您想创建项目的文件夹中运行以下命令。

  • curl https://bitbucket.org/hauptsachenet/typo3-bootstrap/get/master.tar.gz|tar -xzs /^[a-z0-9\-]*//
  • make serve

设置项目

这是一个检查表,列出了在创建新项目时要执行的操作,假设源代码将在Bitbucket上,项目将在Mittwald上运行。其他设置也是可能的,但可能需要修改部署过程或(如果您不使用Bitbucket)则需要完全不同的部署配置。

  • 首先创建一个Mittwald项目,因为它需要花费较长时间。使用默认选择的软件预设,并启用ssh。
  • 使用kis.hosteurope.de创建域名(您可以在项目准备好之前从服务器获取IP地址)
  • 创建一个bitbucket仓库(最好与Mittwald项目同名)
  • 现在按照上面本地实例的安装步骤进行操作
  • bitbucket-pipelines.ymlMakefile中配置Mittwald用户ID
  • 确保将新生成的文件添加到您的git仓库中(composer.lock、yarn.lock和LocalConfiguration.php)
  • Mittwald完成设置后,在bitbucket中启用流水线并生成ssh密钥。将公钥放在Mittwald服务器上。
  • 创建数据库并将数据库移动到Mittwald,这次就一次完成
  • 在Mittwald服务器上html/{branch-name}位置创建一个.env文件,内容如下所述。
  • 在Mittwald中配置您的域名,使其指向html/{branch-name}/current/web
  • 将Let's Encrypt证书添加到域名。
  • 现在您应该能够首次部署项目,但不要忘记下一步
  • 添加调度程序cron作业(在Mittwald中,使用php_cli调用html/{branch-name}/vendor/bin/typo3cms,参数为scheduler:run
  • 确保Mittwald性能加+已激活

.env文件

以下.env配置应在生产环境中使用

DATABASE_URL=mysqli://username:password@host:3306/database

但还有更多您可能感兴趣的内容

MAILER_URL=smtp://username:password@smtp.mailtrap.io:2525
IMAGEMAGICK_PATH=/usr/local/bin/
LOG_DEPRECATION=1
PLATFORM=docker
TYPO3_CONTEXT=Development

其中大部分都用于AdditionalConfiguration.php中,请查看那里。

如何……

……处理docker并在本地启动项目

最简单的方法是使用包含的makefile。要查看提供的命令,请运行make help。这里只提供简要概述

  • make start启动项目
  • make stop停止项目
  • make cc清除所有可用缓存并更新数据库模式
  • make pull获取当前生产数据库和fileadmin(您可能需要ssh凭证)
  • make log显示所有日志文件(除了php错误日志,因为TYPO3不接受stderr作为log_file,并覆盖它)

但是,如果您了解自己在做什么,并且是为了调试,可以直接使用docker。服务是通过docker-compose编排的。因此,docker-compose命令是您的朋友。

本项目包含了运行它所需的几乎所有命令(除了make和docker)。这些命令位于bin文件夹中。以下是最重要的几个:

  • bin/composer 运行docker化的composer版本来处理PHP依赖。
  • bin/yarn 运行docker化的yarn版本来处理CSS/JS依赖。
  • bin/typo3cms 运行helhum/typo3-console,用于缓存清除或一般命令的执行。

…处理扩展TypoScript

如果您包含其他扩展(您可能会的),您应该通过TypoScriptTemplateHook::addStaticInclude添加它们的TypoScript(请参阅/web/typo3conf/ext/hn_templates/ext_localconf.php)。您可以使用bin/typo3cms template:list列出所有可用的包含项。

如果您想在后端编辑一些TypoScript常量,您需要设置所谓的扩展模板。如果您打算使用它,不要忘记将typo3/cms-tstemplate/composer.json中的require-dev移动到常规的require块中,以便在实时实例中可用。

…组织模板

我们使用正常的typo3目录结构,意味着模板组织在以下位置:

  • Resources/Private/Layouts
  • Resources/Private/Partials
  • Resources/Private/Templates

此外,我们尽可能使用BEM模式来命名和组织模板和部分。这意味着所有样式和脚本都与它们的模板相邻。

假设您想创建一个部分FancyHeadline.html,您的目录结构将如下所示:

  • Resources/Private/Templates/Partials/FancyHeadline.html
  • Resources/Private/Templates/Partials/FancyHeadline.js
  • Resources/Private/Templates/Partials/FancyHeadline.scss

内容将如下所示:

<div class="fancy-headline">{content}</div>
import $ from 'jquery';

// i always recommend this initial loop setup.
// this way your partial is reusable but does not do anything if not used at all.
$('.fancy-headline').each(function () {
    $(this).addClass('fancy-headline--fly-in');    
});
.fancy-headline {
    font-size: 20px;
    transform: translateY(-20px);
    transition: transform .2s;
    
    &.fancy-headline--fly-in {
        transform: translateY(0);
    }
}

…处理资源如CSS/JS

我们使用webpack来处理CSS/JS输出。这允许我们使用强大的后处理工具,如autoprefixerbabel,并且它还避免了在使用TYPO3默认前端堆栈部署项目时的一些问题。

您需要知道的是,所有资源都是在名为webpack的docker服务中使用webpack处理的。此服务在后台运行webpack-dev-server,并通过端口:5002(默认)提供文件。更多信息可能可以通过webpack集成扩展获得。

如果您遇到CSS或JS文件无法传送到前端(或完全缺失)的问题,您应该检查webpack日志,无论是通过make log还是docker-compose logs -f -n100 webpack

Webpack使用此项目的根目录中的webpack.config.js文件进行配置。最重要的是,有入口点。默认情况下,包括web/typo3conf/ext/hn_templates/ext_index.js。如果您创建了更多扩展,您还需要按加载顺序将您的扩展作为入口点添加。

此入口点文件简单地将所有scss和js文件包含在Resource/Private文件夹中,但您可以根据需要添加更复杂的逻辑。

如果您想生成所有前端资源的生产构建,只需运行bin/yarn build。然后您还可以通过打开url /build/report.html查看您的js包有多重。