我正在从事多个作曲家软件包和一个重新添加我开发的所有软件包的应用程序。
我想知道如何拥有具有多个版本的软件包
- 生产的稳定版本
- 开发/本地开发的主版本
我尝试了以下配置,但它不起作用
{
"minimum-stability" : "dev",
"require" : {
"varunsridharan/vsp-framework" : "^1.0",
"wponion/wponion" : "^1.0"
},
"require-dev" : {
"varunsridharan/vsp-framework" : "dev-master",
"wponion/wponion" : "dev-development"
}
}
当我运行composer install
或composer install --no-dev
时,我得到以下输出
Loading composer repositories with package information
Updating dependencies
[ComposerDependencyResolverSolverProblemsException]
Problem 1
- The requested package varunsridharan/vsp-framework ^1.0 exists as varunsridharan/vsp-framework[dev-master] but these are rejected by your constraint.
Problem 2
- The requested package wponion/wponion ^1.0 exists as wponion/wponion[dev-development] but these are rejected by your constraint.
install [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-dev] [--no-custom-installers] [--no-autoloader] [--no-scripts] [--no-progress] [--no-suggest] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [-a|--classmap-author
itative] [--apcu-autoloader] [--ignore-platform-reqs] [--] [<packages>]...
作曲家具有require
和require-dev
的原因是允许开发人员安装软件包,通过使用不建议在生产中使用的软件包,可以使他们更好地调试。通过在require-dev
上添加包装,此软件包在生产中不需要。
ex。如果要优化查询,请查看您是否有任何n 1查询问题等,您可能需要安装php-debugbar
,以向您显示此信息,但是在生产上进行此信息可能会揭示您的查询,并将敏感信息提供给>坏人。
require
上包含的软件包将始终安装在开发和生产中,这就是您看到错误The requested package xxxxx exists as xxxxx[dev-development] but these are rejected by your constraint
的原因。
要在 dev 和 prod 中具有不同的软件包,您需要每个环境的不同composer.json文件,就像@George所说的那样。
您可以拥有一个composer.json
文件,该文件将是生产作曲家和一个可以用于开发的composer-dev.json
。
在您的本地环境上,您需要设置 Composer env变量的值 composer-dev.json 。
这样做的简单方法是这样运行作曲家:COMPOSER=composer-other.json php composer.phar install
如果您需要一个新的软件包,则需要两次运行命令,一次是正常的,一次是在作曲家之前添加composer = composer-other.json,以确保在开发和生产中同时添加包装。
p.s我不知道为什么您需要不同的开发和生产软件包的原因,但是建议它在dev和prod中具有相同版本的包装,因为它们可能会带来bugs
您可以尝试在开发环境中更改Composer.json文件。参见作曲家
COMPOSER=composer-dev.json php composer install
参考作曲家 - 指定`composer.json`路径