在Composer脚本中可通过exec()等函数调用其他Composer命令,如exec('composer update monolog/monolog', $output, $returnCode)并在composer.json中配置post-install-cmd执行自定义类方法,需确保composer在PATH中、使用--no-interaction避免阻塞并检查返回码防错。
在 Composer 脚本中调用另一个 Composer 命令,可以通过使用 exec()、shell_exec() 或 proc_open() 等 PHP 函数来执行系统命令。由于 Composer 本身是基于命令行的工具,直接运行 composer xxx
是最简单的方式。
你可以在自定义脚本中使用 exec()
来调用其他 Composer 命令。例如,在执行某个逻辑后自动更新依赖:
exec('composer update monolog/monolog', $output, $returnCode); if ($returnCode !== 0) { throw new RuntimeException('Composer update failed'); }
假设你想在运行 post-install-cmd
后自动执行另一个 Composer 命令,可以这样配置:
{ "scripts": { "post-install-cmd": [ "MyScript::runAdditionalCommand" ] } }
然后在你的 PHP 类中实现调用:
class MyScript { public static function runAdditionalCommand($event) { $cmd = 'composer require vendor/package --no-interaction'; exec($cmd, $output, $returnCode); if ($returnCode !== 0) { echo "Failed to run command: $cmd\n"; exit($returnCode); } foreach ($output as $line) { echo $line . "\n"; } } }
composer
可执行文件在 PATH 中,否则应使用完整路径(如 php /usr/local/bin/composer
)--no-interaction
避免交互式提示阻塞脚本每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 //m.sbmmt.com/ All Rights Reserved | php.cn | 湘ICP备2023035733号