理解 Composer 的 minimal-stability 属性

大伟哥 提交于 2021-09-12,周日, 23:00 ,最近更新于2021-09-13,周一, 09:07

安装Drupal Commerce 的时候碰到了如下问题:

Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Root composer.json requires drupal/commerce ^2.26 -> satisfiable by drupal/commerce[2.26.0].
    - drupal/commerce 2.26.0 requires drupal/inline_entity_form ^1.0-rc6 -> found drupal/inline_entity_form[dev-1.x, 1.0.0-rc6, ..., 1.x-dev (alias of dev-1.x)] but it does not match your minimum-stability.
Installation failed, reverting ./composer.json and ./composer.lock to their original content.

minimum-stability 规定了默认状态下获取包的稳定性,默认状态下是stable,也是就正式稳定版,稳定性由高到低分别是 stable, RC, beta, alpha, dev.

drupal/commerce 依赖 drupal/inline_entity_form 包的1.0-rc6以上版本,但目前该模块最新版本是1.0-rc9, 还不是稳定版,因此不符合稳定性要求。

那怎么办呢?

一个简单粗暴的方式就是在composer.json文件里直接把 minimum-stability 修改成接受RC版本的状态:

"minimum-stability": "RC",

但是这样一来,整个项目能够接受的所有依赖包都由 stable 版本变成了RC版了,这显然降低了整个网站的稳定性和可靠性,因此大伟哥不推荐这种全局性的修改。

一个更稳妥的办法,就是在 require 里面使用稳定性标识,只给特定的包放宽稳定性要求,允许它使用指定的版本:

"require" : {
    "drupal/inline_entity_form": "@RC"
}

这样就不会对其他包的稳定性产生任何影响了。

标签

添加新评论

此字段内容将保密,不会被其他人看见。

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。
验证码
发布评论前,请通过下面的验证,以免被当作垃圾评论机器人屏蔽。
9 + 4 =
计算出这道简单的算术题并键入答案。例如、1+3,就输入 4。