【问题标题】:Can a development class from one Composer library be used in a development class from a different Composer library?来自一个 Composer 库的开发类可以在来自不同 Composer 库的开发类中使用吗?
【发布时间】:2020-01-28 06:22:40
【问题描述】:

我在一个库的 dev 部分有一个有用的类,我想在第二个库的 dev 部分中使用它而不复制该类。

如果我执行composer require --dev my/library,它会将整个库移动到开发部分,使其无法用于实时代码。

我认为能够做到这一点的唯一方法是手动编辑composer.json 中的autoload-dev 部分,以将该类指向正确的vendor 目录。这行得通,但感觉是错误的做法。

是否有推荐的方法告诉 Composer 使来自一个 Composer 库的开发类可用于不同的 Composer 开发类?

【问题讨论】:

    标签: composer-php


    【解决方案1】:

    遗憾的是,没有干净的方法。

    唯一的方法就是你提到的那个。指向您的composer.json 文件的autoload-dev 部分中的供应商文件夹,例如:

    "autoload-dev": {
        "psr-4": {
            "Other\\Library\\Tests\\": "vendor/other/library/tests"
        }
    },
    

    【讨论】:

      【解决方案2】:

      如果在另一个包中使用一个包,则 Composer 中的任何“dev”都会被忽略。

      如果您的某个库中有一个有用的类并且想要使用它,则必须将其公开为“生产”代码,而不是“开发”代码,包括非开发自动加载。

      您应该能够创建另一个仅包含您有用的开发类的库,然后在其他任何地方创建 require --dev 这个库。

      将自动加载器指向供应商文件夹深处可能会起作用,但我认为这是一个糟糕的 hack,而不是解决方案。如果您重命名该库中的文件夹,它将中断。

      【讨论】:

        猜你喜欢
        • 2016-06-15
        • 1970-01-01
        • 2020-12-03
        • 1970-01-01
        • 2022-01-11
        • 2019-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多