Extension installation

This tutorial assumes that your TYPO3 instance is a brand new installation, without any themes, templates, pages or content.

We assume that you are working on your local machine using DDEV and that you followed these steps:

Installing TYPO3 with DDEV

Install the site package you just created

From all extensions, including our site package extension, must be installed via Composer.

As a site package is created with site-specific files it is usually best to keep the files together in a version control system such as Git.

Create a directory for local version-controlled extensions at the root-level of your installation. The name is arbitrary, we use packages/ here.

Then edit your composer.json in the root of your installation directory to add the path as a local repository.

Add the following lines:

   "name": "myvendor/mysite",
   "repositories": [
         "type": "path",
         "url": "./packages/*"
   "require": {
      "typo3/cms-core": "^13.1",
      "..." : "..."
   "..." : "..."

Move your extension folder site_package/ into the packages/ folder. Then require the extension via Composer using the package name defined in the site package extension's composer.json now located at packages/site_package/

   "name": "myvendor/site-package"

require it by:

Execute in directory page_root
composer require myvendor/site-package:@dev

Project file structure

Your project should now have the following structure:

  • .ddev

  • config

  • packages

    • site_package

      • [All sitepackage files]
      • composer.json
  • public

    • fileadmin

      • [Images for content, PDFs, ...]
    • [public files needed by TYPO3]
  • var

    • log
    • [private files needed by TYPO3]
  • vendor

    • [All installed packages, including TYPO3 source]
  • composer.json
  • composer.lock