在Composer中,可通过环境变量或–分隔符向脚本传参,并使用&&、;等shell符号执行多个命令,复杂逻辑建议封装为独立脚本或类方法处理。

在 Composer 中,scripts 允许你定义在特定事件触发时运行的命令。你可能需要向脚本传递参数,或在一个 script 中执行多个命令。下面说明如何实现这两点。
传递参数给 scripts
Composer 自身不支持直接在 composer.json 的 scripts 中使用占位符来接收外部参数(如 shell 变量),但你可以通过以下方式间接实现:
使用环境变量:在运行 composer run 时设置环境变量,脚本中调用的命令读取这些变量。示例:COMPOSER_ENV=production composer run build
然后你的脚本可以调用一个 PHP 或 Shell 脚本,该脚本读取 COMPOSER_ENV 并做出相应处理。
也可以写一个封装脚本(如 build.php)来接收参数:
“scripts”: { “build”: “php build.php”}
运行时传参(注意:需用 — 分隔):
composer run build — –target=dist –minify
此时 –target=dist –minify 会作为参数传给 build.php,可在脚本中用 $argv 解析。
执行多个命令
一个 script 可以按顺序执行多个命令,使用 shell 的命令连接符即可:
&&:前一个命令成功才执行下一个;:无论成功与否都继续执行||:前一个失败才执行下一个(用于 fallback)
示例:
行者AI
行者AI绘图创作,唤醒新的灵感,创造更多可能
100 查看详情
“scripts”: { “deploy”: “php artisan clear-compiled && php artisan optimize && php artisan queue:restart”}
也可以换行提升可读性(JSON 支持字符串换行):
“scripts”: { “post-deploy”: “echo ‘Starting post-deploy…’ && php migrate.php && rm -rf cache/* && echo ‘Done'”}
更复杂的逻辑建议封装成独立脚本文件:
“scripts”: { “deploy”: “php deploy.php”}
使用闭包或类方法作为脚本处理器(高级)
Composer 支持使用 PHP 回调函数处理脚本,适合复杂逻辑和参数处理:
“scripts”: { “my-command”: “My\ScriptHandler::myMethod”}
在回调方法中可以通过 Event 对象获取命令行参数:
public static function myMethod(ComposerScriptEvent $event) { $args = $event->getArguments(); // 处理参数}
运行时传参:
composer run my-command arg1 arg2 –option=value
基本上就这些。参数传递依赖外部机制(环境变量或 $argv),多个命令可用 shell 连接符或封装脚本处理。简单任务用 shell 命令链,复杂逻辑推荐独立脚本或类方法。
以上就是composer scripts 如何传递参数和执行多个命令?的详细内容,更多请关注php中文网其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/599119.html
微信扫一扫
支付宝扫一扫