从 PHP 脚本运行编辑器脚本事件


Running Composer script events from a PHP script

我目前正在为我们的平台编写安装脚本,它需要能够创建一个composer.json文件,然后运行Composer。我已经这样做了,在大多数情况下它工作正常。我遇到的问题是,我们的一个依赖项在安装每个后续包时运行一个任务(用于将配置 yaml 文件复制到主项目的目录),使用 Composer 的 script 选项。例如,在生成的Composer.json文件中,有点看起来像这样:

"scripts": {
    "post-package-install": [
        "Super''Cool''Task::postInstall"
    ],
    "pre-package-update": [
        "Super''Cool''Task::preUpdate"
    ],
    "post-package-update": [
        "Super''Cool''Task::postUpdate"
    ]
},

如果我删除供应商文件夹,然后在目录中手动运行 Composer,则事件工作正常,但从我的安装脚本运行它会给我留下一条错误消息

Class Super'Cool'Task is not autoloadable, can not call post-package-install script .

我唯一的感觉是,也许 Composer 正在尝试从我的脚本中的位置运行其自动加载器,而不是 composer.json 文件的位置,但这只是一种预感。

有谁知道解决这个问题的方法?或者这是作曲家中的错误?

只是一个更新,事实证明这是一个已经修复的问题。运行composer self-update修复了它