Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,090 of 9,090 pages
About the help in other languages
All help pages

Packaging your application as an extension

Turn an application into an installable extension - repository layout, composer.json with the extension type, extension.xml and ezinfo.php, license and copyright, install steps, settings defaults, documentation and the…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/creators/app-creators/packaging-as-an-extension.md

On this page

Packaging your application as an extension

This page is for application creators who want others (or other installations) to install their application. An extension that installs with one composer require, activates with one setting and documents itself is easy to adopt.

The About page lists every extension with what its ezinfo.php or extension.xml says
The About page lists every extension with what its ezinfo.php or extension.xml says

Contents

  1. The repository
  2. composer.json
  3. extension.xml and ezinfo.php
  4. Install steps
  5. License
  6. Checklist

The repository

One Git repository per extension, its root being the extension directory (Anatomy of an extension):

expdemo/
├── composer.json
├── extension.xml
├── ezinfo.php
├── LICENSE
├── README.md          what it does, requirements, install, settings
├── doc/               the longer documentation
├── classes/ modules/ design/ settings/ share/ bin/ cronjobs/ translations/
└── tests/

composer.json

Extensions are Composer packages of type ezpublish-legacy-extension; the installer plugin places them in extension/<name> (3.5 Extensions are Composer packages):

{
    "name": "yourvendor/expdemo",
    "description": "Demo application for Exponential",
    "type": "ezpublish-legacy-extension",
    "license": "GPL-2.0-or-later",
    "require": { "php": ">=8.0" },
    "extra": { "ezpublish-legacy-extension-name": "expdemo" }
}

Libraries your code needs go in require; never commit vendor/. Publishing it: Composer packages and Packagist.

extension.xml and ezinfo.php

Both state the same name, version, copyright, license and website; the about page (/ezinfo/about) reads extension.xml first. Dependencies on other extensions go into extension.xml <dependencies>. See the shipped extension/ezstarrating/extension.xml for a complete example.

Install steps

Document, and automate where possible:

  1. composer require yourvendor/expdemo
  2. ActiveExtensions[]=expdemo
  3. ./console ext:expdemo:install-schema (your idempotent table installer, Database schema and .dba files)
  4. php bin/php/ezpgenerateautoloads.php -e and ./console exp:velocity deploy
  5. Policies to give, cron lines to add, settings to set in settings/override/.

License

Exponential is GPL v2 or later; code that runs inside it is usually distributed under a compatible license. Put the license in LICENSE, composer.json, ezinfo.php and extension.xml. Credit code you based your work on (Licensing for buyers); this is not legal advice.

Checklist

  • To do: Installs with Composer into extension/<name>; activates with one line.
  • To do: Works with a clean installation and the shipped design (templates overridable).
  • To do: No secrets, no host names, no personal data in the repository.
  • To do: Translatable texts, at least English.
  • To do: Tests run in CI (Continuous integration for extensions).
  • To do: Version in all metadata files matches the tag (Versions and releases).
  • To do: README with requirements, install, settings and support.

Become an Exponential Partner

Partners share their information, provide funding, contribute back and develop the products with us, and that is how Exponential grows. A partner website and dashboard are planned for mid-2027: please become a partner today to speed up our growth rate and land new features faster.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x