如何从 subversion 包加载所需的依赖项

How to load required dependencies from subversion package

我为 laravel 制作了自己的 composer 包,并使用 subversion 来管理版本等。Composer 不会从我们自己的包中安装 require 和 require-dev 包。

我的主要项目作曲家

"name": "laravel/laravel",
  "description": "The Laravel Framework.",
  "keywords": [
    "framework",
    "laravel"
  ],
  "repositories": [
    {
      "type": "svn",
      "url": "https://path/to/package/title/"
    }
  ],
  "license": "MIT",
  "type": "project",
  "require": {
    "php": ">=7.2.0",
    "laravel/framework": "5.5.*",

    "company/package-name": "~1.0.0"
  },

包裹composer.json

{
  "name": "company/package-name",
  "require": {
    "php": ">=7.2.0",

  },
  "require-dev": {
    "phpunit/phpunit": "^6.0",
    "orchestra/testbench": "^3.5"
  },

}

在这种情况下,从未安装 orchestra/testbench。当我在主项目composer.json中添加它时,它会被安装,但是当它在包composer.json中时,composer不会安装它。

有人能告诉我我的设置有什么问题吗?

在正常情况下,不应考虑将开发包用于应用程序的最终构建。如果您需要此依赖项,可以尝试将其移至 require 部分。

require-dev field is a "root-only" field and is only taken into consideration when you install a project as the root package(换句话说,不作为依赖)。您的 "main project" 是根包的示例。

之所以 require-dev 是一个 "root-only" 字段,是为了指定只有当有人想在此包上开发或 运行 它的测试时才需要的包要求.

如果你想安装 orchestra/testbench,我假设你想在你的主包中使用它来开发测试。在那种情况下,我建议将它添加到主包的 require-dev 字段中。

如果您的主项目中不需要orchestra/testbench包,则无需安装。使用您的 company/package-name 包不需要它。