我的大多数项目都是使用 Composer 1 构建的。现在我要升级到 Composer 2,我想运行一个命令来获取用于构建项目的 Composer 版本。获取版本的最佳方式是什么?我相信该版本存储在
plugin-api-version
中,但不确定获取该版本的最佳方法是什么。希望有一个 Composer 命令可以读取它。
在切换到 Composer 2 时,项目就崩溃了,我也遇到了同样的问题。当然,就我而言,这是一个错误导致的,Composer 1 的处理方式与 Composer 2 不同,但这并不重要。这意味着我们不能盲目地在所有项目中切换 Composer 版本。它需要在每个项目的基础上进行测试。所以我做了一些挖掘。
plugin-api-version
已添加到 Composer v1.10.0 中。插件 API 版本似乎与 Composer 版本并不相同,但主版本至少匹配,因此只要知道是否使用了 Composer 1 或 2 就足够了。但是,您必须记住,使用 Composer 版本 1.9.0 或更早版本构建的 plugin-api-version
文件中缺少 composer.lock
。根据这些信息,我编写了这个 shell 脚本:
for f in $(find projects/ -maxdepth 2 -name composer.lock); do echo -n $f:; grep plugin-api-version $f || echo "plugin-api-version missing"; done
一些示例输出:
projects/abc/composer.lock: "plugin-api-version": "2.3.0"
projects/def/composer.lock:plugin-api-version missing
projects/ghi/composer.lock:plugin-api-version missing
projects/jkl/composer.lock:plugin-api-version missing
projects/mno/composer.lock: "plugin-api-version": "2.3.0"
projects/pqr/composer.lock: "plugin-api-version": "2.6.0"
projects/stu/composer.lock:plugin-api-version missing
projects/vwxyz/composer.lock: "plugin-api-version": "1.1.0"