Make
Kickstart a TYPO3 Extension with "Make"
"Make" is a TYPO3 extension provided by b13. It features a quick way to create a basic extension scaffold on the console. The extension is available for TYPO3 v10 and above.
1. Install "Make"
In Composer-based TYPO3 installations you can install the
extension via Composer, you should install it as dev
dependency as
it should not be used on production systems:
composer req b13/make --dev
ddev composer req b13/make --dev
To install the extension on legacy installations, download it from the TYPO3 Extension Repository (TER), extension "make".
2. Kickstart an extension
Call the CLI script on the console:
vendor/bin/typo3 make:extension
ddev exec vendor/bin/typo3 make:extension
typo3/sysext/core/bin/typo3 make:extension
3. Answer the prompt
"Make" will now answer some questions that we describe here in-depth:
Enter the composer package name
(e. g. "vendor/ awesome"): -
A valid composer package name is defined in the getcomposer name scheme.
The vendor should be a unique name that is not yet used by other companies or developers.
Example:
my-
vendor/ my- test Enter the extension key
[my_ test]: - The extension key should follow the rules for best practises on
choosing an extension key if you plan to publish
your extension. In most cases, the default, here
my_
, is sufficient. Press enter to accept the default or enter another name.test Enter the PSR-
4 namespace [T3docs/ My Test]: - The namespace has to be unique within the project. Usually the default should be unique, as your vendor is unique, and you can accept it by pressing enter.
Choose supported TYPO3 versions
(comma separate for multiple) [TYPO3 v11 LTS]: - If you want to support both TYPO3 v11 and v12, enter the following:
11,12
Enter a description of the extension:
- A description is mandatory. You can change it later in the file
composer.
of the extension.json Where should the extension be created?
[src/ extensions/]: - If you have a special path for installing local extensions like
packages
enter it here. Otherwise you can accept the default. May we add a basic service configuration for you?
(yes/ no) [yes]: - If you choose
yes
"Make" will create a basicConfiguration/
to configure dependency injection.Services. yaml May we create a ext_
emconf. php for you? (yes/ no) [no]: - Mandatory for extensions supporting TYPO3 v10. Starting with v11:
If your extension should be installable in legacy TYPO3 installations
choose
yes
. This is not necessary for local extensions in Composer-based installations.
4. Have a look at the result
"Make" created a subfolder under src/
with the
composer name (without vendor) of your extension. By default, it contains
the following files:
$ tree src/extensions
└── my-test
├── Classes
├── Configuration
| └── Services.yaml (optional)
├── composer.json
└── ext_emconf.php (optional)
5. Install the extension
On Composer-based installations the extension is not installed yet. It will not be displayed in the Extension Manager in the backend.
To install it, open the main composer.
of your project (not the
one in the created extension) and add the extension directory as new repository:
{
"name": "my-vendor/my-project",
"repositories": {
"0_packages": {
"type": "path",
"url": "src/extensions/*"
}
},
"...": "..."
}
Then require the extension on Composer-based systems, using the composer name defined in the prompt of the script:
composer req t3docs/my-test:@dev
ddev composer req my-vendor/my-test:@dev
Activate the extension in the Extension Manager.
6. Add functionality
The following additional commands are available to add more functionality to your extension:
make:
- Create a new backend controllerbackendcontroller make:
- Create a new commandcommand make:
- Create a new event listenereventlistener make:
- Create a new middlewaremiddleware