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

Getting the code for a bundle

The three documented ways to get Exponential's code (git clone and composer install, composer create-project, composer require into your own project), which one suits which kind of bundle, and how to check the result…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/bundlers/getting-the-code-for-a-bundle.md

On this page

Getting the code for a bundle

This page is for whoever writes the build of a bundle. The installation guide documents three ways to get the code (3.2 Three ways to get the code); each suits a different kind of bundle.

Contents

  1. The three ways
  2. Which way for which bundle
  3. Build commands
  4. Check the result
  5. Common mistakes

The three ways

WayGives youSource
A. git clone and composer installthe kernel and every se7enxweb extension as Git clones with their history3.2 A
B. composer create-projectrelease archives without history (clones with --prefer-source --keep-vcs)3.2 B
C. composer require into an empty directorythe kernel as a package of your own project, with your own composer.json3.2 C

Which way for which bundle

BundleWayWhy
Container or server image of a fixed releaseB, with a versionarchives are smaller; the image is rebuilt for every update anyway
Agency starter kitCyour composer.json and composer.lock are the specification of the kit
A bundle whose recipients develop on itAGit shows what changed and lets them update with Git (Develop with Git)
Hosting panel installerB or a prepared archive of Bfast, no history needed in every account
Distribution packageB or a source archive of the tagthe package manager does the updating

Build commands

A pinned release, archives, no test tools (way B):

composer create-project se7enxweb/exponential:v6.0.14 exponential --no-dev

create-project "treats the downloaded composer.json as the root package, so its config.allow-plugins ... and its post-install-cmd script apply: the class maps are generated at the end (php bin/php/ezpgenerateautoloads.php). On a production server add --no-dev, which leaves out the test tools" (3.2 B).

Your own project (way C):

mkdir exponential
cd exponential
composer config allow-plugins.se7enxweb/exponential-legacy-installer true
composer require se7enxweb/exponential
php bin/php/ezpgenerateautoloads.php

The package has the type ezpublish-legacy; the installer plugin puts it in the project root. "If you answer no [to trusting the plugin], the kernel lands in vendor/se7enxweb/exponential/ and the extensions in vendor/ as well, where nothing finds them." Composer runs only your root package's scripts, so generate the class maps yourself.

Note

Which PHP a version needs decides whether Composer installs it at all: v6.0.8 to v6.0.14 require PHP ^8.1; the 6.0.15 line (main) accepts PHP 8.0. "No published tag accepts PHP 8.0" (3.1). Build with the PHP your bundle ships.

Check the result

php bin/php/console --version
ls vendor/autoload.php
composer show se7enxweb/exponential

The first command names the version (for example console (Exponential) 6.0.15stable). "If vendor/autoload.php is missing, Composer did not finish; run composer install again and read its output from the first error" (Check the result).

Then check what the PHP of your bundle lacks:

php bin/php/console exp:velocity ext check

It "lists every extension the installation wants, marks what is missing and prints the install command" (Containers: Docker and Podman).

Common mistakes

  • Building from main and calling it a release. main moves; record the commit, or build from a tag (Versions, tags and pinning).
  • Running composer update in a build. It resolves new versions each time. Build with composer install from your lock file (Lock files and reproducible builds).
  • Building as root and shipping root-owned files. Fix ownership before you package (File permissions and var/ ownership).
  • Shipping .git directories by accident. Way A and --keep-vcs keep them; decide whether your recipients want them.

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