Pregunta

Is it possible to install a file out of the 'vendor' directory when doing a composer install/update?

Let me elaborate a bit more if your not sure what i mean.

I have a config file(s) that are stored in /config/ini/<filename>.ini and lots of vendor modules in the vendor directory. Would it be possible to package the ini files with the vendor packages so upon installation they are written to the correct directory?

Ideally I need to be able to achieve this because i have an Authentication vendor module that will need to be installed in various different applications. Being able to do this will mean that the private key and other shared configuration options can be stored with the vendor module (in a private repo ofc).

Thanks Mike

¿Fue útil?

Solución

Yes, you can. You need to create a script which is attached to post-install-cmd or post-update-cmd. That script will look in the package directories, select the issues and dump them in the correct dir.

It'll be somewhere around these lines:

use Composer\Script\CommandEvent;

class ScriptHandler
{
    public function bundleConfigs(CommandEvent $event)
    {
        $homeDir = $event->getComposer()->getConfig()->get('home');

        $vendorDir = $event->getComposer()->getConfig()->get('vendor-dir');
        $files = glob($vendorDir, '/*Module/config/*.ini');

        foreach ($files as $file) {
            copy($file, $homeDir.'/config/ini/'.basename($file));
        }
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top