安装已经由另一个依赖项安装的依赖项

时间:2018-08-17 16:06:48

标签: symfony dependencies composer-php yarnpkg

这是我第一次提出关于SO的问题,这是因为找不到与我的问题匹配的关键字。

我有一个Symfony应用程序,并且正在使用随easyadmin下载的composer捆绑软件。我将以easyadmin为例说明事实,但我的问题也可能在另一个捆绑包中。

因此,easyadmin捆绑包具有多个依赖性,例如jquery v2.2.0bootstrap v3.3.6Respond.js v1.4.2select2 4.0.1等... {{1}的依赖性}直到现在都不是问题。实际上,我现在需要使用easyadmin的最新版本,即bootstrap

就像其他前端依赖一样,我正在使用4.1.1。我所有的前端依赖项都位于名为yarn的文件夹中,该文件夹位于  我项目的dependencies文件夹。

我已经尝试下载带有public/asset的{​​{1}}的最新版本,但是现在我的项目中已经加载了bootstrap的两个版本。 有问题吗?

为了用javascript文件对此进行说明(因为我的问题涉及js和css文件),我有一个yarn文件夹,其中包含bootstrap

vendor

我的文件夹easyadmin包含项目的所有依赖项:

- vendor
|
--- easyadmin-bundle
  |
  --- src/Resources/public/javascript/
    |
    --- select2.min.js
    --- bootstrap.min.js
    --- respond.min.js

根据我的理解,在这种情况下,我必须在项目中拥有dependencies的两个版本。因为- public | --- asset | --- dependencies | --- bootstrap.min.js 使用bootstrap作为其功能,并且需要easyadmin用于我的项目。 我对吗?

例如,如果bootstrap v3使用bootstrap 4的版本4,我是否必须向项目中添加easyadmin,还是应该使用{{1 }}?我很困惑..

提前感谢您的未来解答。

1 个答案:

答案 0 :(得分:1)

在您的示例中,使用两种版本的引导程序都没有问题,因为EasyAdminBundle附带了这些依赖项,它们被塞在src/Resources/public/的捆绑软件中。这些文件将被复制或符号链接到项目的公用文件夹中。这意味着只要您不覆盖其中的任何一个,并且不要意外地将它们混入前端逻辑中就可以了。不混淆它们应该很容易,因为您只需要来自public / asset文件夹的文件,而不会干扰EasyAdminBundle创建的文件。

您不应该依赖EasyAdminBundle中的js和css,因为它无法控制其更新方式。因此,即使EasyAdminBundle在某个时候移至引导程序4,我还是建议您将前端依赖项与EasyAdminBundle提供的依赖项分开。此建议可能不会对提供资产的每个捆绑销售商品都有效。