Commits (2)
# EditorConfig is awesome: http://EditorConfig.org
# top-most EditorConfig file
root = true
# Unix-style newlines with a newline ending every file
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
indent_style = space
indent_size = 4
indent_size = 2
[submodule "Resources"]
path = Resources
url = https://github.com/TYPO3/LandingPageTemplate.git
This diff is collapsed.
# composer.typo3.org
This repository contains the web pages for http://composer.typo3.org.
This repository contains the web pages for <http://composer.typo3.org>.
## Installation
To install it locally:
# Clone the repository
git clone git://git.typo3.org/Sites/ComposerTypo3Org.git
# Clone the repository
git clone ssh://git@gitlab.typo3.org:2222/services/composer.typo3.org.git
# Install packages dependencies
cd ComposerTypo3Org
composer install
# Install packages dependencies
cd composer.typo3.org
composer install
# Download typo3.org landing page sub-module
git submodule update --init
## Contributing
To change and submit the content of this website, send patches to GitLab:
# Create a new branch
git branch <name_of_your_new_branch>
To change and submit the content of this website, send patches to Gerrit:
# Install the Gerrit Hook
scp -p -P 29418 USERNAME@review.typo3.org:hooks/commit-msg .git/hooks/
# After committing your changes, push to a special branch for review
git push origin HEAD:refs/for/master
# Make and commit the changes
git commit -m <your_commit_message>
# Push the changes
git push
Subproject commit 25346ca4f9d0976fe01062aa3ebb7b53e97eda97
......@@ -3,13 +3,17 @@
"description": "Website for https://composer.typo3.org",
"type": "project",
"require": {
"erusev/parsedown": "^1.6"
"php": ">=5.6"
"license": "GPL2+",
"license": "GPL-2.0-or-later",
"authors": [
"name": "Helmut Hummel",
"email": "info@helhum.io"
"name": "Simon Gilli",
"email": "typo3@gilbertsoft.org"
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
"hash": "045f6ba69a5643e9399c56c5179ee7ca",
"content-hash": "1cad3a661ef7a505c8bb7c87450f2ab7",
"packages": [
"name": "erusev/parsedown",
"version": "1.6.1",
"source": {
"type": "git",
"url": "https://github.com/erusev/parsedown.git",
"reference": "20ff8bbb57205368b4b42d094642a3e52dac85fb"
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/erusev/parsedown/zipball/20ff8bbb57205368b4b42d094642a3e52dac85fb",
"reference": "20ff8bbb57205368b4b42d094642a3e52dac85fb",
"shasum": ""
"require": {
"php": ">=5.3.0"
"type": "library",
"autoload": {
"psr-0": {
"Parsedown": ""
"notification-url": "https://packagist.org/downloads/",
"license": [
"authors": [
"name": "Emanuil Rusev",
"email": "hello@erusev.com",
"homepage": "http://erusev.com"
"description": "Parser for Markdown.",
"homepage": "http://parsedown.org",
"keywords": [
"time": "2016-11-02 15:56:58"
"content-hash": "566921b331f659064f4f8391de3d9b11",
"packages": [],
"packages-dev": [],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": [],
"prefer-stable": false,
"prefer-lowest": false,
"platform": [],
"platform": {
"php": ">=5.6"
"platform-dev": []
<ul class="breadcrumbs">
<a href="https://typo3.org/" target="_top" title="TYPO3 - The Enterprise Open Source CMS">typo3.org</a>
<a href="https://typo3.org/download/" target="_top" title="Download">Download</a>
<li>TYPO3 CMS Composer Repository</li>
TYPO3 Extension Composer Repository
What Is It?
This is a [Composer](https://getcomposer.org/) repository, enabling you to install TYPO3 extensions from the [TYPO3 Extension Repository](https://typo3.org/extensions/repository/) (TER) including their TER dependencies via Composer.
This repository includes only the following TYPO3 CMS extensions:
* All TYPO3 Extensions that are uploaded to TER, including insecure versions.
* Insecure versions are marked in th extra section with "extra""typo3/ter""reviewstate" = "insecure" in the composer extra section
* All these extensions are in the `typo3-ter/` composer namespace
You can [list and search for](https://composer.typo3.org/satis.html) available extension packages.
Please note, that some extension authors already published their extensions on [Packagist](https://packagist.org/). If this is the case, prefer to use these, rather than this repository.
How to use it?
As a quick way to use Composer, the Base Distribution can be downloaded. It is assuming you have Composer already [installed](https://getcomposer.org/download/)
on your system:
# Download the Base Distribution, the latest "stable" release (9.5)
composer create-project typo3/cms-base-distribution CmsBaseDistribution
# Download the Base Distribution, the "dev" branch (10.x)
composer create-project typo3/cms-base-distribution CmsBaseDistribution dev-master
As a second step, we are going to add additional packages. The commands must be run from inside the ``CmsBaseDistribution`` directory.
# Add a CMS extension into typo3conf/ext.
composer require typo3-ter/static-info-tables
# Add a package from outside the TYPO3 world
composer require monolog/monolog
# Personalize your composer.json file to your needs.
edit composer.json
Using composer to install TYPO3 CMS is fairly simple, you just need to include the custom composer repository into your composer.json.
After you have done this, you can require TER extensions with the usual [composer versioning format](https://getcomposer.org/doc/04-schema.md#version).
In the example below, this will always get you the most current 9.5.x core of TYPO3 CMS, the most current version of news (including possible dependency!).
**Pay attention to replace underscores "_" by a dash "-" in the extension key**. As example, extension **"tt_news" will be "tt-news"** in the composer.json.
"repositories": [
"type": "composer",
"url": "https://composer.typo3.org/"
"require": {
"typo3/minimal": "^9.5",
"typo3-ter/static-info-tables": "^6.4.3"
"extra": {
"typo3/cms": {
"cms-package-dir": "{$vendor-dir}/typo3/cms",
"web-dir": "web"
Add your own composer.json file
It is encouraged to add your own ``composer.json`` file in your extension to be on the good side, as TYPO3 CMS will rely more and more on Composer to handle
dependencies. The file must be placed at the root of your extension and must look like as follows:
"name": "vendor-name/my-ext-key",
"type": "typo3-cms-extension",
"description": "My description comes here",
"homepage": "https://example.com",
"license": ["GPL-2.0+"],
"keywords": ["TYPO3 CMS", "foo bar"],
"support": {
"issues": "https://forge.typo3.org/projects/extension-my_ext_key"
"require": {
"typo3/cms-core": "^8.7.0 || ^9.5.0"
"autoload": {
"psr-4": {
"VendorName\\MyExtKey\\": "Classes/"
"replace": {
"my_ext_key": "self.version",
"typo3-ter/my-ext-key": "self.version"
"extra": {
"typo3/cms": {
"extension-key": "my_ext_key"
The ``vendor-name`` must be one of yours. It **must not** be "typo3" which is reserved for Core extensions.
There are some [conventions notes](https://wiki.typo3.org/Namespaces#Does_and_don.27ts_for_developers) available in the TYPO3 Wiki related to namespaces.
Extensions on Packagist
Once you added a composer.json file, it is highly recommended to register your extensions on [Packagist](https://packagist.org/).
It is also recommended to include extensions directly from Packagist instead of using this Composer repository. For example, better require `georgringer/news` than `typo3-ter/news`, if you want the News extension in your composer installation.
How does it work?
A few times a day we crawl the TYPO3 Extension Repository.
We process all ext_emconf.php's to calculate the dependencies.
We generate the metadata (packages.json), needed by composer to find the right downloads which will be downloaded from the TER eventually.
[4]: https://git.typo3.org/Sites/ComposerTypo3Org.git
require __DIR__ . '/vendor/autoload.php';
$output = file_get_contents(__DIR__ . '/Resources/template.html');
$contentRaw = file_get_contents(__DIR__ . '/index.md');
$parser = new Parsedown();
$content = $parser->text($contentRaw);
$output = str_replace('###CONTENT###', $content, $output);
$output = str_replace('../', '/Resources/', $output);
echo $output;
header('Location: https://get.typo3.org/misc/composer/repository');