Execute command after composer install

Hi everyone,

I’m trying to generate a file out of a Settings.yaml configuration as soon as my package has been added to the project via composer. What I did so far:

namespace DIU\Neos\PWA\Composer;

use Composer\DependencyResolver\Operation\InstallOperation;
use Composer\DependencyResolver\Operation\UpdateOperation;
use Composer\Script\Event;
use Composer\Installer\PackageEvent;
use Neos\Flow\Package\PackageManager;
use Neos\Utility\Files;

 * Class for Composer install scripts
class InstallerScripts
     * Make sure required paths and files are available outside of Package
     * Run on every Composer install or update - must be configured in root manifest
     * @param Event $event
     * @return void
    public static function postInstallCreateFile(Event $event){
       # I need the root path as I want to add the file here, copied from Neos Flow package 
       if (!defined('FLOW_PATH_ROOT')) {
            define('FLOW_PATH_ROOT', Files::getUnixStylePath(getcwd()) . '/');

        echo "hello world";
        // add command to create file from Settings.yaml

and I have added this to my composer.json of my package:

    "scripts": {
        "post-install-cmd": [
        "post-update-cmd": [

Unfortunately it looks like my command won’t get executed. I always see only
instead of my command. Can I hook in here somehow? Can I even use the Flow commands when they are executed from composer ?

Thanx a lot!

So composer run-script post-install-cmd gives no output from your package? Or how do you test it?

Yes, this is my output:

ddev:/var/www/html$ composer run-script post-install-cmd
> Neos\Flow\Composer\InstallerScripts::postUpdateAndInstall

I would expect at least:

ddev:/var/www/html$ composer run-script post-install-cmd
> Neos\Flow\Composer\InstallerScripts::postUpdateAndInstall
> DIU\Neos\PWA\InstallerScripts::postInstallCreateFile

and an error message if something isn’t working.

I also deleted all caches and the Packages folder and tried composer update/install with no effect.

The package it self ( command controller, Fusion, …) works like expected.

From reading this


It’s written as it’s only the root composer.json file where scripts are taken into account. Did you add them to your own package or the root composer.json file?