This page explains the basic steps for creating a package that extends Fusion by building upon the lifecycle example. For the complete result of this example, see the GitLab repository. Note that this repository contains content for other examples as well, as the documentation uses a single package for all examples.
Metadata
Since the production file
fusion.json already contains Fusion as a
nested example dependency,
the content remains the same:
{
"name": "Package",
"description": "Basic example package.",
"id": "valvoid/package",
"version": "0.1.0",
"structure": {
"gitlab.com/valvoid/'fusion": "package/==1.0.0-dev:main",
"/cache": "cache",
"/extensions/config": "extension",
"/public": "state",
"/dependencies": [
"valvoid.com/valvoid/fusion/1.0.0"
]
},
"environment": {
"php": {
"version": "8.1.0"
}
},
"lifecycle": {
"migrate": "/lifecycle/migrate.php"
}
}
Note that for all commands in this example chapter, you will be referencing the
fusion file located in the root directory of the nested package to apply the
examples.
Extension Group
Inside the nested Fusion package, relative to its root directory, create the
extension group
within the
flagged extension directories:
- Custom config files:
/extensions/config/valvoid/package - Custom source code files:
/extensions/src/valvoid/package
In your terminal, navigate to the root directory of the nested Fusion package
if not already there, and execute the following
build command:
fusion build
Once done, the extensions.php file inside the nested Fusion package's /cache
directory will contain content created by the
helper task extend:
// Auto-generated by Fusion package manager.
// Do not modify.
return [
"/extensions/config" => [
1 => "valvoid/package",
],
"/extensions/src" => [
1 => "valvoid/package",
],
];
Tools
List of classes that Fusion uses internally, which may be useful for your use case:
Valvoid\Fusion\Config\ConfigValvoid\Fusion\Dir\DirValvoid\Fusion\Log\LogValvoid\Fusion\Tasks\GroupValvoid\Fusion\Hub\HubValvoid\Fusion\Metadata\MetadataValvoid\Fusion\Bus\Bus