php - 共享 Composer 依赖项

标签 php dependencies composer-php

我正在开发一个可以安装扩展的项目,即安装核心程序,然后可以下载并向其添加第三方扩展。

如果有两个单独的扩展需要相同依赖项的相同版本(例如,如果两个扩展需要 AWS SDK),是否有任何方法可以使 Composer 最终不会下载两个副本相同的依赖关系?

最佳答案

您可以将扩展创建为 Composer 包。然后将对您自己的包的引用添加到主 composer.json 文件中。

例如:

root/
   my-extension-a/
      composer.json ( require: dep-a, dep-b)
      vendor/
          dep-a/
          dep-b/
   my-extension-b/
      vendor/
          dep-a/
          dep-c/
      composer.json (require dep-a, dep-c)

  main-project/
      composer.json  (require my-extension-a, my-extension-b)
      vendor/
          my-extension-a/
          my-extension-b/
          dep-a/
          dep-b/
          dep-c/

主项目中的 composer.json 文件如下所示:

"require": {
         "parent5446/my-extension-a": "dev-master",
         "parent5446/my-extension-b": "dev-master"
}

您可以在 packagist 中公开您的扩展。或者您可以使用 Satis 来引用私有(private)存储库。此功能在这里有详细记录:Managing private packages with Satis and Composer

关于php - 共享 Composer 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16150831/

相关文章:

php 标签系统 - 如果标签已存在于表中

php - Composer : How to get composer to install a version that depends on an older PHP?

svn - composer安装本地svn依赖

c# - 构建大量项目和解决方案时如何节省磁盘空间?

dependencies - 使用 useEffect 和 useState 避免 ESLint 'react-hooks/exhaustive-deps' 警告

php - 列出依赖特定 GitHub repository/library/dependency 的所有存储库

php - 如何从 PHP 中的数组中选择随机值?

php - 有经验的 Web 开发人员迁移到 PHP 的好资源?

php - 我如何使用 php 中的读/写逐一添加电子邮件

asp.net-mvc - 为什么我的 NuGet 包没有添加一些引用的 NuGet 包作为依赖项?