【问题标题】:Can I programmatically trigger "composer update" using the Composer API?我可以使用 Composer API 以编程方式触发“composer update”吗?
【发布时间】:2018-10-31 19:25:01
【问题描述】:

我有一个运行的作曲家脚本,它调用一个类的静态方法。我的班级对 composer.json 文件进行了一些修改,然后使用 Composer API 中的 Composer\Json\JsonFile 类对其进行了重写:

composer.json

{
  ...
  "scripts": {
    "my-script": "MyScriptObject::doSomething"
  }
} 

我的问题是,如何使用 Composer API 从 MyScriptObject 类内部触发 composer update我不想使用pre-update-cmd,因为我无法向它传递参数。

在查看 API 文档时,我可以看到有一个 Composer\Installer 类,我可以使用它来执行以下操作:Composer\Installer::create(IOInterface $io, Composer $composer)->run(),但它执行安装并从锁定文件加载依赖项。我想执行更新,以便重新生成锁定文件。

有谁知道这个在 API 中的位置吗?

来源:https://getcomposer.org/apidoc/master/index.html

【问题讨论】:

  • 我假设在 PHP 中你可以使用 shell_execshell_exec('composer update');

标签: php composer-php


【解决方案1】:

答案就在我面前。我所要做的就是在调用 run 之前setUpdate()

Composer\Installer::create($this->io, $this->composer)->setUpdate(true)->run();

来源:https://github.com/composer/composer/blob/1.0.0-alpha3/src/Composer/Installer.php#L489

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多