I'm writing a package for Packagist and I'm facing a problem with Composer. I need to copy a file from my package to the project root after install, but nothing is happening after the package installation.
After reading Composer documentation, I found that I should put a script inside the event post-install-cmd, inside the script section into composer.json file.
So, I added this to my package composer.json file
"scripts": {
"post-install-cmd": [
"php -r \"copy('vendor/myvendor/mypackage/myfile', 'myfile');\""
]
}
To install the package I'm doing
$ composer require myvendor/mypackage --dev
After the package installation everything seems fine, but the file is not being copied and no error is shown.
See https://getcomposer.org/doc/articles/scripts.md for the documentation of scripts. The most relevant part is:
Note: Only scripts defined in the root package's
composer.json
are executed. If a dependency of the root package specifies its own scripts, Composer does not execute those additional scripts.
So, you cannot define any scripts in your module. There is a bug report about that, but the maintainer of composer is not a friend of executing the scripts of dependencies