Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Copy files from package to project root directory using composer

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.

like image 940
felipe_bool Avatar asked Feb 14 '18 00:02

felipe_bool


1 Answers

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

like image 161
Nico Haase Avatar answered Nov 03 '22 17:11

Nico Haase