Composer 中用于开发和生产的不同软件包版本

Var*_*ran 3 php composer-php

我正在研究多个作曲家包和一个应用程序,该应用程序需要我开发的所有包。

我想知道如何拥有多个版本的软件包

  1. 用于生产的稳定版本
  2. 本地开发的开发/主版本

我尝试遵循配置但它不起作用

{
  "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 installcomposer 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)

Geo*_*Myl 6

您可以尝试在开发环境中更改composer.json文件。参见作曲家

COMPOSER=composer-dev.json php composer install
Run Code Online (Sandbox Code Playgroud)

参考Composer - 指定 `composer.json` 路径


小智 6

之所以作曲家requirerequire-dev是让开发者安装软件包,使他们更好地使用,不建议在生产中使用的包调试。通过在require-dev此包上添加包将不需要生产。

前任。如果你想优化你的查询,看看你是否有任何 n+1 查询问题等你可能想要安装php-debugbar它会显示你这个信息,但是在生产中使用它可能会暴露你的查询并将敏感信息提供给坏人

包含的软件包require将始终安装在开发和生产中,这就是您看到错误的原因 The requested package xxxxx exists as xxxxx[dev-development] but these are rejected by your constraint

要在DEVPROD 中使用不同的包,您需要为每个环境使用不同的 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中使用相同版本的包,因为版本不同可能会带来错误