【问题标题】:How to load required dependencies from subversion package如何从 subversion 包中加载所需的依赖项
【发布时间】:2019-09-06 10:42:28
【问题描述】:

我为 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不会安装它。

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

【问题讨论】:

    标签: svn dependencies composer-php


    【解决方案1】:

    require-dev 字段是“仅限根”字段,仅在将项目安装为 root package 时才会考虑(换句话说,不是作为依赖项)。您的“主项目”是根包的一个示例。

    require-dev 是“仅限根”字段的原因是,它旨在指定仅当有人想要在此包上进行开发或运行其测试时才需要的包要求。

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

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

    【讨论】:

    • 谢谢,我想知道为什么其他软件包也将 require-dev 设置为 composer 文件。是不是类似,如果你想测试这个你需要这个包吗?
    • 是的,当有人想要贡献或编辑包时,它就在那里。然后他们可以运行安装require-dev 包,以便能够运行测试以查看他们的更改是否破坏了任何东西。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2020-05-25
      • 2012-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-01
      • 2010-09-15
      • 2021-06-11
      相关资源
      最近更新 更多