Create an extension
For an extension to be installable in TYPO3 it needs a file called
composer.
. You can read more about this file here:
composer.json.
A minimal composer.
to get the extension up and running
could look like this:
{
"name": "ttn/tea",
"description": "TYPO3 example extension for unit testing and best practices",
"type": "typo3-cms-extension",
"authors": [
{
"name": "Oliver Klee",
"email": "typo3-coding@oliverklee.de",
"homepage": "https://www.oliverklee.de",
"role": "maintainer"
},
{
"name": "Daniel Siepmann",
"email": "coding@daniel-siepmann.de",
"homepage": "https://daniel-siepmann.de/",
"role": "maintainer"
},
{
"name": "\u0141ukasz Uzna\u0144ski",
"email": "lukaszuznanski94@gmail.com",
"homepage": "https://uznanski.pl/",
"role": "maintainer"
}
],
"homepage": "https://extensions.typo3.org/extension/tea/",
"support": {
"issues": "https://github.com/FriendsOfTYPO3/tea/issues",
"source": "https://github.com/FriendsOfTYPO3/tea",
"docs": "https://docs.typo3.org/p/ttn/tea/main/en-us/"
},
"require": {
"php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0",
"psr/http-message": "^1.0.1",
"typo3/cms-core": "^11.5.4 || ^12.4",
"typo3/cms-extbase": "^11.5.4 || ^12.4",
"typo3/cms-fluid": "^11.5.4 || ^12.4",
"typo3/cms-frontend": "^11.5.4 || ^12.4"
},
"prefer-stable": true,
"autoload": {
"psr-4": {
"TTN\\Tea\\": "Classes/"
}
},
"extra": {
"typo3/cms": {
"extension-key": "tea"
}
}
}
<?php
$EM_CONF[$_EXTKEY] = [
'title' => 'Tea example',
'description' => 'Example extension for unit testing and best practices',
'version' => '3.1.0',
'category' => 'example',
'constraints' => [
'depends' => [
'php' => '7.4.0-8.3.99',
'typo3' => '11.5.4-12.4.99',
'extbase' => '11.5.4-12.4.99',
'fluid' => '11.5.4-12.4.99',
'frontend' => '11.5.4-12.4.99',
],
],
'state' => 'stable',
'uploadfolder' => false,
'createDirs' => '',
'author' => 'Oliver Klee, Daniel Siepmann, Łukasz Uznański',
'author_email' => 'typo3-coding@oliverklee.de, coding@daniel-siepmann.de, lukaszuznanski94@gmail.com',
'author_company' => 'TYPO3 Best Practices Team',
'autoload' => [
'psr-4' => [
'TTN\\Tea\\' => 'Classes/',
],
],
'autoload-dev' => [
'psr-4' => [
'TTN\\Tea\\Tests\\' => 'Tests/',
],
],
];
Hint
If the extension should also be available for legacy installations it
also needs a file called ext_
. This file
contains roughly the same information in a different format. Have a look
at the tab "Legacy" above.
With just the composer.
present (and for legacy installations additionally
ext_
) you would be able to install the extension
but it would not do anything.
Though not required it is considered best practice for an extension to have an
icon. This icon should have the format .svg
or .png
and has
to be located at EXT:
.