作曲家。如何根据用户 php 版本安装特定版本的包?
Composer. How to install a specific version of package based on user php version?
我的包有两个版本:php7 和 php5。是否可以让 composer 在安装包时确定用户拥有哪个 php 版本,并据此安装我的包的正确版本?
TL;DR: 是的。
默认情况下,composer 使用 php 可执行文件的版本来确定要安装哪个版本的包。这可以在 composer.json 的 config
部分覆盖,例如:
"config": {
"vendor-dir": "vendor",
"platform": {
"php": "5.6"
}
}
当有人需要您的包时,会将此版本与您包的 composer.json 的要求列表中指定的版本进行比较:
"require": {
"php": ">=7.2.0",
}
因此,例如,如果您的软件包版本 1 需要 php 5.6,而版本 2 需要 php 7.0,那么运行 composer require your-package
和 php 5.6 的人将安装版本 1。如果有人使用比您的任何版本所需的旧版本运行它,他们将收到一条错误消息,指出 composer 找不到满足所有要求的包,php 版本就是其中之一。
只安装一个作曲家你可以使用不同的 php 版本访问这个作曲家
/usr/bin/php /usr/local/bin/composer
/usr/bin/php7.1 /usr/local/bin/composer
/usr/bin/php7.0 /usr/local/bin/composer
我的包有两个版本:php7 和 php5。是否可以让 composer 在安装包时确定用户拥有哪个 php 版本,并据此安装我的包的正确版本?
TL;DR: 是的。
默认情况下,composer 使用 php 可执行文件的版本来确定要安装哪个版本的包。这可以在 composer.json 的 config
部分覆盖,例如:
"config": {
"vendor-dir": "vendor",
"platform": {
"php": "5.6"
}
}
当有人需要您的包时,会将此版本与您包的 composer.json 的要求列表中指定的版本进行比较:
"require": {
"php": ">=7.2.0",
}
因此,例如,如果您的软件包版本 1 需要 php 5.6,而版本 2 需要 php 7.0,那么运行 composer require your-package
和 php 5.6 的人将安装版本 1。如果有人使用比您的任何版本所需的旧版本运行它,他们将收到一条错误消息,指出 composer 找不到满足所有要求的包,php 版本就是其中之一。
只安装一个作曲家你可以使用不同的 php 版本访问这个作曲家
/usr/bin/php /usr/local/bin/composer
/usr/bin/php7.1 /usr/local/bin/composer
/usr/bin/php7.0 /usr/local/bin/composer