如何要求同一个包的两个版本?

问题描述 投票:0回答:3

在我的项目中,我需要使用两个版本的 twitter bootstrap(v2.x 和 v3.x),2 用于后端,3 用于前端。 是否可以以某种方式要求两者并告诉作曲家将它们安装在不同的目录中?

类似的东西:

   {
       "name": "acme/hello-world",
       "require": {
           "twitter/bootstrap": "2.3.*",
           "twitter/bootstrap": "3.0.* as 'twitter/bootstrap3'" 
       }
   }
composer-php
3个回答
2
投票

如果需要,您可以覆盖加载程序对象内的名称空间。不完全是同时有两个版本。但也许您想在脚本中的某个地方使用其他版本。

$reflection = new \ReflectionClass(\Composer\Autoload\ClassLoader::class);
$vendorDir = dirname(dirname($reflection->getFileName()));

$loader->set('Company\\Classname\\', $vendorDir.'/composer/../Other_company/OrOtherClassname/src');

1
投票

您不能要求两个版本,您的应用程序应该只使用一个包的一个版本。


0
投票

您可以使用composer-isolation在前缀命名空间下安装一组不同的依赖项。

例如,您可以拥有 GuzzleHttp 和 Legasy\GuzzleHttp。

https://github.com/ological-and/composer-isolation

© www.soinside.com 2019 - 2024. All rights reserved.