问题描述
我不太明白 Composer 如何使用最低稳定性设置.
I don't really understand how Composer works with the minimum-stability setting.
我有两个包裹.比方说,PackageA
和 PackageB
.
I have two packages. Let's say, PackageA
and PackageB
.
PackageA
的composer.json
文件如下:
{
"name": "vendor/packagea",
"minimum-stability": "dev",
"require": {
"vendor/packageb": "dev"
}
}
所以 PackageA
需要 PackageB
.PackageB
的 json 长这样:
So PackageA
requires PackageB
. The json of PackageB
looks like this:
{
"name": "vendor/packageb",
"minimum-stability": "dev"
}
所以两者都说最低稳定性是dev
.所以我假设当我这样做时:
So both say minimum stability are dev
. So I assume that when I do:
composer create-project vendor/packagea
但随后它抱怨消息:
[InvalidArgumentException]
Could not find package vendor/packagea with stability stable.
我觉得奇怪,因为我认为将最低稳定性设置为 dev
会将包从其开发"分支中拉出.在 github 的情况下总是 dev-master
.
Which I find strange, because I would assume that setting the minimum stability to dev
would pull the package from its "development" branch. Which in the case of github is always dev-master
.
所以我尝试通过告诉 composer 使用哪个分支来安装它:
So I tried to install it by telling composer what branch to use:
composer create-project vendor/packagea testFolder dev-master
然后它抱怨它找不到 PackageB
:
But then it complains that it can't find PackageB
:
Installing dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.
Problem 1
- The requested package vendor/packageb dev could not be found.
那么我该如何安装我的包呢?我还在开发,所以我还不想为 PackageA 和 PackageB 创建一个版本...
Then how am I able to install my package? I'm still developing so I dont want to create a release for PackageA and PackageB yet...
推荐答案
有两个问题:
在 create-project 中,默认情况下该命令使用稳定的稳定性来查找要安装的包,这就是为什么如果您指定 dev-master 而不是默认情况下它可以工作的原因.但是,您也可以运行 composer create-project vendor/packagea -s dev
In create-project, by default the command uses the stable stability to look for the package to install, that's why it works if you specify dev-master but not by default. You could however also run composer create-project vendor/packagea -s dev
在安装依赖项之后,我猜你的包不存在于一个名为 dev
的版本中,所以如果你需要它,它就找不到它.要求 dev-master 可能会起作用,例如:
After while installing dependencies, I'm guessing that your package does not exist in a version just called dev
, so it can't find it if you require it like that. Requiring dev-master would probably work, like:
{
"name": "vendor/packagea",
"minimum-stability": "dev",
"require": {
"vendor/packageb": "dev-master"
}
}
这篇关于根据您的最低稳定性设置,该软件包在足够稳定的版本中不可用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!