PHPackages                             dreadlabs/typo3extension - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. dreadlabs/typo3extension

Abandoned → [dreadlabs/typo3extension](/?search=dreadlabs%2Ftypo3extension)ArchivedProject

dreadlabs/typo3extension
========================

Kickstarts a TYPO3 extension

115PHP

Since Sep 4Pushed 12y ago1 watchersCompare

[ Source](https://github.com/DreadLabs/typo3extension)[ Packagist](https://packagist.org/packages/dreadlabs/typo3extension)[ RSS](/packages/dreadlabs-typo3extension/feed)WikiDiscussions master Synced today

READMEChangelogDependenciesVersions (1)Used By (0)

typo3extension
==============

[](#typo3extension)

[![https://travis-ci.org/DreadLabs/typo3extension.png?branch=master](https://camo.githubusercontent.com/65cd863ac254ca7a130cd5e909653f5fa36f66ceaa46a56da42800e1e7166334/68747470733a2f2f7472617669732d63692e6f72672f44726561644c6162732f7479706f33657874656e73696f6e2e706e673f6272616e63683d6d6173746572)](https://travis-ci.org/DreadLabs/typo3extension)A TYPO3 extension kickstart package for usage with composer dependency manager.

- [How to use](#how-to-use)
- [Features](#features)
    - [Predefined build targets](#predefined-build-targets)
        - [Deployment](#deployment)
        - [Create new deployment target](#create-new-deployment-target)
    - [Best practices](#best-practices)
        - [Manage secret properties](#manage-secret-properties)
        - [Manage secret data in the project directory](#manage-secret-data-in-the-project-directory)
- [Requirements](#requirements)
- [Configuration](#configuration)
    - [Main configuration](#main-configuration)
    - [Target configuration](#target-configuration)
- [Assumptions](#assumptions)
- [License](#license)

[How to use](#id1)
------------------

[](#how-to-use)

1. Download the Composer executable

    Assuming you have a download directory for your development tools: `cd` into it and download the Composer executable.

    ```
    $ cd /path/to/global/
    $ curl -sS https://getcomposer.org/installer | php
    ```
2. Init your new TYPO3 extension project

    Assuming you have a projects root directory, where all your local and/or mirrored remote projects reside: `cd` into it and execute the Composer `create-project`command.

    ```
    $ cd /path/to/your/projects/root/directory
    $ php /path/to/global/composer.phar create-project dreadlabs/typo3extension ./YourExtensionKey
    ```
3. Kickstart with basic information

    ```
    $ cd YourExtensionKey
    $ vendor/bin/phing -f build/Kickstart.xml
    ```
4. Initial commit

    ```
    $ git add . && git commit -m '[INIT] initial commit'
    ```
5. Start coding!

[Features](#id2)
----------------

[](#features)

### [Predefined build targets](#id3)

[](#predefined-build-targets)

This project package comes with some predefined build targets from best practices during the work with TYPO3 extensions.

#### [Deployment](#id4)

[](#deployment)

**Note**: Ensure the desired target in `build/Properties/Target[targetName].properties` is properly configured.

```
$ cd YourExtensionKey
$ vendor/bin/phing -f build/Deploy.xml -DdeployTo=[targetName]
```

Where as `[targetName]` is the base name of one of the property files located at *build/Properties/Targets/*.

#### [Create new deployment target](#id5)

[](#create-new-deployment-target)

```
$ cd YourExtensionKey
$ vendor/bin/phing -f build/NewTarget.xml
```

Step through the wizard and enter the necessary information to create a new deployment target property file.

### [Best practices](#id6)

[](#best-practices)

#### [Manage secret properties](#id7)

[](#manage-secret-properties)

If you need to use other, target independend secret properties make use of the predefined properties file `build/Properties/Secret.properties`. This file gets blacklisted for the SCM after executing the Kickstart project.

#### [Manage secret data in the project directory](#id8)

[](#manage-secret-data-in-the-project-directory)

If you need to specify secret data (e.g. API keys) in your application code (e.g. TypoScript setup). Please follow the following step-by-step guide:

1. Create the TypoScript configuration file suffixed with special file extension `.dist.`

    e.g.: `src/Configuration/TypoScript/Constants/apikeys.dist.ts`
2. Instead of storing the constant value into the TypoScript file, define a placeholder

    e.g.: `plugin.tx_api.key = @@@API_KEY@@@`
3. Save the constant value into Secrets.properties which is excluded from SCM by default

    e.g.: `keys.api = 0123456789`
4. Extend the EvaluateTemplates default FilterChain located at `build/Projects/EvaluateTemplates/FilterChainDefault.xml`

    e.g.: ``
5. Add the suffix-less TypoScript configuration file to your .gitignore to avoid accidentally committing secret data

    e.g. `src/Configuration/TypoScript/Constants/apikeys.ts`
6. You can securely commit your `*.dist.*` TypoScript configuration files now.

Please note, that this approach needs a strong team communication for exchanging the secret data credentials between team members.

[Requirements](#id9)
--------------------

[](#requirements)

Currently this project requires a \*nix machine as it makes usage of some low level commands like `wget`, `curl`.

[Configuration](#id10)
----------------------

[](#configuration)

### [Main configuration](#id11)

[](#main-configuration)

Can be changed in *build/Properties/Build.properties*. The following properties influence the deployment process.

- **typo3.cms.downloader** - *(string)* - Defines the downloader tool.

    Valid values: `wget`, `curl`
- **typo3.cms.install** - *(boolean)* - Flags if TYPO3 must be installed.

    Default: `true`
- **typo3.cms.flavor** - *(string)* - Specifies the package to download.

    - *Dummy package doesn't include symlinks.*
    - *Leave empty performs a source only download.*

    Default: empty

    Valid values: `dummy`, `blank`, `government`, `introduction`
- **typo3.cms.version** - *(string)* - TYPO3 CMS version to download

    Example: `6.0`
- **typo3.cms.format** - *(string)* - Download package format

    *Also flags if symlinks should be used (zip = no symlinks)*

    Default: empty (means `tar`)

    Valid values: `tar`, `zip`
- **typo3.cms.defaultConfigurationDirectory** - *(string)* - Default configuration file path relative to build dir.

    Default: `../www/t3lib/stddb/`
- **typo3.cms.defaultConfigurationFile** - *(string)* - Default configuration file name

    Default: `DefaultConfiguration.php`
- **typo3.cms.enableInstallTool** - *(boolean)* - Flags if the install tool should be enabled

    Default: `true`
- **build.cache.dir** - *(string)* - Build cache directory relative to build directory

    *Downloaded packages or target's LocalConfiguration.php gets cached here.*

    Default: `../.build-cache/`
- **build.cache.package** - *(string)* - Build cache package path &amp; name

    Default: `${build.cache.dir}typo3cms${typo3.cms.version}.pkg`
- **target.current.dir** - *(string)* - Symlink name at target machine which gets updated on deployment

    Default: `current`
- **target.releases.dir** - *(string)* - Name of directory to store releases in

    Default: `releases`
- **target.releases.keep** - *(integer)* - Amount of releases to keep for rollbacks

    Default: `5`

### [Target configuration](#id12)

[](#target-configuration)

Can be changed in *build/Properties/Targets/\*.properties*. Please note to leave *NewTarget.properties* unchanged as this is the template for the NewTarget build project.

All target properties get prefixed by `target.` during the deployment process.

- **hostname** - *(string)* - Name (or IP address) of the target machine
- **port** - *(integer)* - Port number of the target machine

    *Used during deployment via scp/ssh*

    Example: 22
- **username** - *(string)* - Target machine authentification user name.
- **password** - *(string)* - Target machine authentification password.
- **path** - *(string)* - Target machine deployment path

    *The contents of www/ will be copied into this directory*
- **symlink.typo3\_src** - *(string)* - Specifies the typo3\_src symlink target

    *Specify a path to:*

    1. move typo3\_src out of the Document Root (blank package)
    2. change typo3\_src symlink (dummy package)

    *Set this to an empty value to not change anything regarding the typo3\_src symlink.*
- **symlink.index\_php** - *(boolean)* - Flags if the index.php symlink should be used.

    *On some systems the index.php may not be symlinked.*

    `false`: remove symlink, replace with index.php from typo3\_src folder/symlink.

    `true`: leave symlink
- **db.host** - *(string)* - Hostname of the targets DBMS

    Example: 127.0.0.1
- **db.name** - *(string)* - Database name of the target
- **db.username** - *(string)* - Database user name of the target
- **db.password** - *(string)* - Database password of the target
- **testing** - *(boolean)* - Flags if the (unit) tests should be executed on the target.
- **php.bin** - *(string)* - Name of the PHP binary on the target machine.
- **islocal** - *(boolean)* - Flags if the target is a local machine.

[Assumptions](#id13)
--------------------

[](#assumptions)

You've chosen this project package to create and deploy your TYPO3 CMS extension with the help of some best practices which emerged by some years of experience during the work with this fantastic PHP application.

This project package is "opinionated software", which means it has very firm ideas about how things ought to be done, and tries to force those ideas on you. Some of the assumptions behind these opinions are:

- You are using SSH to access the target machines.
- You're using `git` to accomplish source code management tasks.
- Deployment is only possible if you have committed your work and created an appropriate tag. The latter is not required but recommended as a deployment also can be done based upon a SHA1 commit object.

[License](#id14)
----------------

[](#license)

This project is free software under the terms of the GNU General Public License version 2 or any later version. The GNU/GPL license (version 2) is found in the file LICENSE.

###  Health Score

20

—

LowBetter than 17% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity7

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/b9af4c6908a4bd2e1fb8562ca37bb31ba08346e42e5965af0f7662bd8b9f38aa?d=identicon)[dreadwarrior](/maintainers/dreadwarrior)

---

Top Contributors

[![dreadwarrior](https://avatars.githubusercontent.com/u/277988?v=4)](https://github.com/dreadwarrior "dreadwarrior (170 commits)")

### Embed Badge

![Health badge](/badges/dreadlabs-typo3extension/health.svg)

```
[![Health](https://phpackages.com/badges/dreadlabs-typo3extension/health.svg)](https://phpackages.com/packages/dreadlabs-typo3extension)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
