使用 composer 将文件从包复制到项目根目录

Copy files from package to project root directory using composer

我正在为 Packagist 写一个包,但我遇到了 Composer 的问题。安装后我需要从我的包中复制一个文件到项目根目录,但是包安装后没有任何反应。

阅读 Composer 文档后,我发现我应该在事件 post-install-cmd 中放入脚本,在脚本部分放入 composer.json 文件。

所以,我将其添加到我的包 composer.json 文件

    "scripts": {
        "post-install-cmd": [
            "php -r \"copy('vendor/myvendor/mypackage/myfile', 'myfile');\""
        ]
    }

安装我正在做的包

$ composer require myvendor/mypackage --dev

包安装后一切正常,但文件未被复制且未显示任何错误。

有关脚本的文档,请参阅 https://getcomposer.org/doc/articles/scripts.md。最相关的部分是:

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.

因此,您不能在模块中定义任何脚本。关于那个有一个bug report,但是作曲家的维护者不是执行依赖脚本的朋友