【问题标题】:Composer skipping post update commands in Symfony 4.4作曲家在 Symfony 4.4 中跳过更新后命令
【发布时间】:2020-05-12 09:43:41
【问题描述】:

我正在将 Symfony 项目从 3.4 升级到 4.4.8。 Sensio Distribution Bundle 被 Flex 取代,因此我以这种方式更新了 composer.json 的脚本部分:

"scripts": {
    "auto-scripts": {
        "cache:clear": "symfony-cmd",
        "assets:install %PUBLIC_DIR%": "symfony-cmd"
    },
    "post-install-cmd": [
        "@auto-scripts"
    ],
    "post-update-cmd": [
        "@auto-scripts"
    ]
},

当我运行作曲家更新时,作曲家警告说命令被跳过:

跳过“cache:clear”(需要 symfony/console 运行)。

跳过“assets:install public”(需要 symfony/console 运行)。

查看 composer.lock,没有安装 symfony/console,因为 symfony/symfony 替换了 symfony/console。运行 composer req cli 没有帮助。我从 shell 运行 symfony 控制台命令(内部和自定义)没有问题

我正在运行 composer (1.10.6) 的最新稳定版本。有什么我想念的吗?

【问题讨论】:

  • 升级 Symfony 的主要版本可能会很棘手,因为一些作曲家的理念通常会发生变化。我建议创建一个新的 4.4 项目,添加第三方包并使用生成的 composer.json 文件作为参考。
  • 我可能会将此作为最后的选择,因为该项目相当大,但我还是很想拥有一个完整的“symfony 4.4 native”架构
  • 为了清楚起见,我并不是明确建议重构整个项目。只是生成一个新的 composer.json 文件。

标签: symfony symfony4


【解决方案1】:

该错误消息表明您缺少“symfony/console”库。

添加:

composer require symfony/console

【讨论】:

  • 除非我弄错了,这个命令相当于“composer req cli”,但不管怎样,我都试过了,都没有成功。 symfony/console 出现在我的 composer.json 中,但不在我的 composer.lock 中
  • 那么我建议尽可能删除锁定文件和供应商文件夹。唯一的缺点是如果您没有明确指定版本,软件包将被更新。但可能是一种确保一切都正确安装的方法。可能还需要删除 symfony.lock。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-13
  • 2016-10-24
  • 1970-01-01
  • 2015-05-18
  • 2017-11-26
  • 1970-01-01
相关资源
最近更新 更多