我正在为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。最相关的部分是:


注意:只有在根包的composer.json中定义的脚本才是
被执行。如果根包的依赖项指定了自己的依赖项
脚本,Composer不会执行这些其他脚本。


因此,您无法在模块中定义任何脚本。对此有一个bug report,但是composer的维护者不是执行依赖脚本的朋友。

07-24 09:38
查看更多