【问题标题】:How do I specify Composer package stability?如何指定 Composer 包的稳定性?
【发布时间】:2016-01-14 13:13:20
【问题描述】:

我在 Bitbucket 上有一个 git 存储库,它是一个支持 Composer 的包(包含一个看起来像这样的 composer.json):

{
    "name": "foo/package",
    "version": "0.0.1"
}

我有另一个包含这个 composer.json 的项目:

{
    "name": "foo/project",
    "repositories": [
        {
            "type": "vcs",
            "url": "[bitbucket git url]",
        }
    ],
    "require": {
         "foo/package": "*"
    }
}

如果我尝试运行composer install,我会收到一条错误消息:

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

  Problem 1
    - Installation request for foo/package * -> satisfiable by foo/package[dev-master].
    - Removal request for foo/package == 9999999-dev

如果我将以下行添加到项目的 composer.json 中,错误就会消失并且包会正确安装。

"minimum-stability": "dev"

我知道 Composer 不认为 foo/package 是稳定的,这就是为什么它说它找不到它,并且添加“最低稳定性”行告诉它 foo/package 可以安装。但我不知道如何告诉 Composer foo/package 稳定的。

将所需版本设置为0.0.1 而不是* 也不起作用,它只会给我这个错误:

 Problem 1
- The requested package stashimi/crawler 0.0.1 could not be found.

我发现了另一个 Stack Overflow 问题,这意味着给 foo/package 一个版本号将表明它是稳定的,但是鉴于上面的文件,这显然是行不通的。我做错了什么?

【问题讨论】:

    标签: php composer-php


    【解决方案1】:

    好的,我找到了自己的问题。基本上,当使用 VCS 存储库时,它会查找具有给定需求版本的 tag。就我而言,由于我的仓库中没有标签 0.0.1,因此 Composer 找不到它。在 repo 中创建该标签解决了这个问题。

    解决此问题的另一种(可能更正确)方法是制作所需的版本dev-master,这基本上意味着“使用存储库中的master 分支”。 (或任何分支;Composer 关于dev-X 版本规范的文档有点混乱。)

    【讨论】:

      【解决方案2】:

      创建稳定版本的唯一方法是对其进行标记。使用semantic versioning 是一个非常好的主意,这意味着真正稳定的版本从版本1.0.0 开始。所有零版本在语义版本控制中都被认为是实验性的和不稳定的,但 Composer 会认为这些标签是稳​​定的。但是,波浪号运算符(不处理零版本不同)和插入符运算符(处理)之间存在差异。

      避免依赖分支!从长远来看,它会破坏您的软件,因为分支并不指向软件包的一个特定状态,而是指向会随着时间而改变的进行中的工作。使用起来很痛苦,最终无法更新任何内容。不要那样走!

      顺便说一句:使用分支是“开发”稳定性,如果您的软件需要一个需要分支的软件包,这将不起作用 - 您必须在您的主软件中允许开发稳定性,这是“最低限度” -stability:dev" 用于您使用的所有包(即使您可以“prefer-stable:true”),或者您需要手动找出正在使用的 dev-stable 包,并明确包含它。

      这样做太麻烦了。标记你的软件,你会没事的,即使它不是语义的。

      【讨论】:

        猜你喜欢
        • 2018-06-10
        • 1970-01-01
        • 1970-01-01
        • 2017-04-30
        • 2016-02-29
        • 2017-05-11
        • 2018-11-26
        • 2016-10-18
        • 2016-10-09
        相关资源
        最近更新 更多