0

我正在寻找一种方法来分离一个包含许多 Symfony 包的活动作曲家包。

目前,该软件包在根目录中有一个全局 composer.json文件,它看起来像这样。

包裹

  • src/DIRECTORY_WITH_MULTIPLE_SYMFONY_BUNDLES

  • 作曲家.json

我想用一个单独的composer.json文件制作每个包,所以我可以只需要我需要的包,而不是整个包。

我不想通过 Packagist 发布包,只想直接从我的仓库加载它,就像

"repositories": {
   "composer": {
       "type": "composer",
       "url": "https://packagist.org"
   },
   "mypackagerepo": {
       "type": "path",
       "url": "https://github.com/PATH_TO_MY_PACKAGE_REPO"
     }
   }

然后像这样从目录中要求我需要的捆绑包

"require": {
   "bundle1": "~1.8.1",
   "bundle2": "~2.18.2"
}
4

1 回答 1

0

如果这是针对商业产品,我建议考虑 Private Packagist。您将支持您的关键基础设施,并且您将获得开箱即用的东西,如本博文所述:https ://blog.packagist.com/installing-composer-packages-from-monorepos/

对于非商业用途,为私人包装师付费可能不太容易。您可以使用 subtreesplit 之类的东西存储库拆分为较小的只读包(另请参见https://lostechies.com/johnteague/2014/04/04/using-git-subtrees-to-split-a-repository/ ),然后您可以在您的项目中使用它,方法是在 packagist.org 上发布包,或者如上所述在您的 composer.json 中注册 git-repositories。

如果您不想拆分存储库,可以将其保留在硬盘上,然后将路径存储库注册到其位置(请参阅https://getcomposer.org/doc/05-repositories.md#path)。这可能是最不受欢迎的选择,因为您不能轻易地重用它。另一个开发人员可能使用不同的位置、目录结构甚至操作系统,并且对于不同的环境(开发、登台、生产)也是如此,这使得重用和维护变得更加困难。

于 2021-03-22T14:51:27.080 回答