如何在带有选项的composer.json中运行自定义命令 create?

How to run a custom command create in composer.json with options?

提问人:grazdev 提问时间:6/17/2022 更新时间:6/19/2022 访问量:390

问:

我想从项目 B 在项目 A 中使用 Codeception bin 文件,因此在项目 B 的文件中,我添加了以下脚本:composer.json

"codecept": "../projectA/vendor/bin/codecept"

有了这个,我可以从项目 B 运行一个命令,例如:

composer codecept bootstrap 

但是,如果我添加一个可以与命令一起使用的选项,例如:bootstrap

composer codecept bootstrap --empty 

Composer 抛出以下错误:

[Symfony\Component\Console\Exception\RuntimeException]  
The "--empty" option does not exist. 

这是我第一次玩自定义命令,所以我不确定我错过了什么。

命令行 终端 composer-php

评论


答:

3赞 grazdev 6/17/2022 #1

好的,我找到了,在传递选项之前必须使用额外的选项,如下所示:--

composer codecept bootstrap -- --empty 
1赞 hakre 6/19/2022 #2

您看到的错误来自Symfony控制台,它是Composer的依赖项。

潜在的问题是 Symfony Console 中的命令行参数解析器存在缺陷(阅读:有限)。

在许多情况下,您可以通过使用参数分隔符并在后面添加命令参数来解决此问题,但并非全部。例如:--

composer codecept bootstrap -- --empty 

但是,这仅适用于Symfony控制台中不存在的命令行选项作为全局参数。例如,这不适用于 ,它将显示作曲家的帮助文本。或者,或者等等等等,例如:--help--version--quiet

composer exec codecept-the-foo-baloo bootstrap -- --version
Composer version ...

甚至不能安装命令/包。正如所写的那样,这是有缺陷的,并引入了这样和类似的限制。