我正在尝试通过cli运行自定义编写器脚本,如下所示:
作曲家custom_script_cli –custom_argument
会发生什么是作曲家认为我要求作曲家是否要将该论点传递给作曲家而不是自定义脚本.
有没有办法在不强制将其添加到自定义脚本本身的情况下执行此操作?
只有我发现与这个主题相关的是git issue from 2013,当时说这是不可能的.不确定4年后是否仍然如此.
只需像往常一样将它们附加到命令行,就可以将参数传递给自定义编写器脚本.但是,如果参数以一个或多个连字符开头(即通常称为命令行选项),则编写器会将该参数视为composer命令本身的选项,除非您使用特殊参数分隔运算符,– .
原文链接:https://www.f2er.com/php/134437.html如果自定义脚本定义运行多个命令,则传递的参数将附加到每个命令.此外,您不能使用像$2这样的shell编程约定来引用单个参数.
如果自定义脚本由回调处理,则脚本有责任从参数中解析选项.从回调的角度来看,-c和-option = B之类的东西是参数.
例
给定一个具有以下内容的composer.json:
{ "autoload": { "psr-4": { "MyVendor\\": "./" } },"scripts": { "pass-args-to-callback": [ "MyVendor\\MyClass::myCallback" ],"pass-args-to-commands": [ "echo one","echo two","@other-command" ],"other-command": [ "echo three" ] } }
<?PHP namespace MyVendor; use Composer\Script\Event; use Composer\Installer\PackageEvent; class MyClass { public static function myCallback(Event $event) { var_dump($event->getArguments()); } }
步骤0:转储Autoloader以识别MyClass
$composer dump-autoload Generating autoload files
测试1:显示没有参数分离运算符的情况
$composer pass-args-to-callback A --option=B -C [Symfony\Component\Console\Exception\RuntimeException] The "--option" option does not exist. pass-args-to-callback [--dev] [--no-dev] [--] [<args>]...
$composer pass-args-to-callback -- A --option=B -C > MyVendor\MyClass::myCallback array(3) { [0]=> string(1) "A" [1]=> string(10) "--option=B" [2]=> string(2) "-C" }
测试3:显示如何将参数和选项附加到命令
$composer pass-args-to-commands -- A --option=B -C > echo one 'A' '--option=B' '-C' one A --option=B -C > echo two 'A' '--option=B' '-C' two A --option=B -C > echo three 'A' '--option=B' '-C' three A --option=B -C