我正在研究多个作曲家包和一个应用程序,该应用程序需要我开发的所有包。
我想知道如何拥有多个版本的软件包
我尝试遵循配置但它不起作用
{
"minimum-stability" : "dev",
"require" : {
"varunsridharan/vsp-framework" : "^1.0",
"wponion/wponion" : "^1.0"
},
"require-dev" : {
"varunsridharan/vsp-framework" : "dev-master",
"wponion/wponion" : "dev-development"
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行composer install或composer install --no-dev得到以下输出时
Loading composer repositories with package information
Updating dependencies
[Composer\DependencyResolver\SolverProblemsException]
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>]...
Run Code Online (Sandbox Code Playgroud)
您可以尝试在开发环境中更改composer.json文件。参见作曲家
COMPOSER=composer-dev.json php composer install
Run Code Online (Sandbox Code Playgroud)
参考Composer - 指定 `composer.json` 路径
小智 6
之所以作曲家require和require-dev是让开发者安装软件包,使他们更好地使用,不建议在生产中使用的包调试。通过在require-dev此包上添加包将不需要生产。
前任。如果你想优化你的查询,看看你是否有任何 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环境变量的值设置为composer-dev.json。
执行此操作的简单方法是像这样运行 composer: COMPOSER=composer-other.json php composer.phar install
如果你想要一个新的包,你需要运行两次命令,一次是正常的,一次是在 composer 之前添加 COMPOSER=composer-other.json ,以确保包将被添加到开发和生产中。
PS我不知道为什么开发和生产需要不同的包,但建议在dev和prod中使用相同版本的包,因为版本不同可能会带来错误