我正在为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的维护者不是执行依赖脚本的朋友。