Make
Kickstart a TYPO3 Extension with "Make"
"Make" is a TYPO3 extension provided by b13. It is a quick way to create a basic extension scaffold via 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, but you should install it as a
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 Classic mode 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 ask you the following questions:
Enter the composer package name(e. g. "vendor/ awesome"): -
Valid composer package names are defined in the getcomposer name scheme.
The vendor should be a unique name that is not used by any other companies or developers.
Example:
my-vendor/ my- test Enter the extension key[my_ test]: - The extension key should follow the rules for best practice for
choosing an extension key if you plan to publish
your extension. In most cases the default, here
my_, will be 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 will be unique because your vendor name is unique, and you can accept it by pressing enter.
Choose supported TYPO3 versions(comma separate for multiple) [TYPO3 v11 LTS]: - If you want your extension to be compatible with both TYPO3 v11 and v12, enter:
11,12 Enter a description of the extension:- A description is mandatory. You can change it later in the
composer.jsonextension file. Where should the extension be created?[src/ extensions/]: - If you have a specific folder for your local extensions like
packagesenter 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/Services.yamlwhich configures dependency injection. May we create a ext_emconf. php for you? (yes/ no) [no]: - Mandatory for extensions supporting TYPO3 v10. Starting with v11:
If your extension needs be installable in legacy TYPO3 installations
choose
yes. If your extension is local and in a Composer-based installation it is not necessary and you can chooseno.
4. Have a look at the result
"Make" has now created a subfolder under src/ with the
same name as the composer name (without vendor) of your extension. By default
the subfolder contains the following files:
src/extensions
$ 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 will be created but not installed. Therefore it won't be displayed in the backend Extension Manager.
To install it, open the main composer.json of
your project (not the one in the new extension) and define the extension
directory as a new repository under repositories:
{
"name": "my-vendor/my-project",
"repositories": {
"0_packages": {
"type": "path",
"url": "src/extensions/*"
}
},
"...": "..."
}
Then, on Composer-based systems, require the extension using the composer name:
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 commands are also available if you want 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