2.1 KiB
2.1 KiB
Scripts
What is a script?
A script is a callback (defined as a static method) that will be called when the event it listens on is triggered.
Scripts are only executed on the root package, not on the dependencies that are installed.
Event types
- pre-install-cmd: occurs before the install command is executed.
- post-install-cmd: occurs after the install command is executed.
- pre-update-cmd: occurs before the update command is executed.
- post-update-cmd: occurs after the update command is executed.
- pre-package-install: occurs before a package is installed.
- post-package-install: occurs after a package is installed.
- pre-package-update: occurs before a package is updated.
- post-package-update: occurs after a package is updated.
- pre-package-uninstall: occurs before a package has been uninstalled.
- post-package-uninstall: occurs after a package has been uninstalled.
Defining scripts
Scripts are defined by adding the scripts
key to a project's composer.json
.
They are specified as an array of classes and static method names.
The classes used as scripts must be autoloadable via Composer's autoload functionality.
Script definition example:
{
"scripts": {
"post-update-cmd": "MyVendor\\MyClass::postUpdate",
"post-package-install": [
"MyVendor\\MyClass::postPackageInstall"
]
}
}
The event handler receives a Composer\Script\Event
object as an argument,
which gives you access to the Composer\Composer
instance through the
getComposer
method.
Using the previous example, here's an event listener example :
<?php
namespace MyVendor;
use Composer\Script\Event;
class MyClass
{
public static function postUpdate(Event $event)
{
$composer = $event->getComposer();
// do stuff
}
public static function postPackageInstall(Event $event)
{
$installedPackage = $event->getOperation()->getPackage();
// do stuff
}
}