Mono-repo setup

This repository is following a mono-repo setup. This means all code and configuration to render documentation is in this repository. This includes scripts to build the documentation and the configuration for the CI/CD pipeline.

Some packages in this repository can be used as standalone packages when not rendering documentation for TYPO3, but for internal company documentation.

To ensure the mono-repo setup works, and also works in separate repositories, we are using a tool called monorepo-builder. This tool will help us to keep the dependencies over packages in sync.

If you add a new dependency to a package, you can run

make monorepo
Copied!

This will update the root composer.json file with the new dependency.

It is recommended to run the validation check before you commit:

make test-monorepo
Copied!

Repository split (subtree-split of this mono-repository)

To be listed on Packagist each package in the folder packages/ of this mono-repository has to have its own Git repository (called "subtree split"). On merging (push/commit) and creating tags, these subrepositories are automatically updated by the GitHub action .github/workflows/split-repositories.yaml.

To add a new split-repository package, the following is needed:

  • Create a repository on GitHub with the matching Composer name, special signs replaced by minus.
  • Configure the repository with maintain rights to the group PHP-based-rendering-bot
  • Add an entry to file config.subsplit-publish.json, formatted like the existing subtrees.
  • Push some change within the correspondig package directory on the mono-repository's main branch.
  • Add the new repository to Packagist.