2016-12-14 176 views
1

当我在供应商文件夹 中尝试composer require something/something时,它开始安装很多我没有要求的东西。作曲家安装不相关的库

就像我刚刚做的composer require ramsey/uuid,Composer创建了一个名为vendor的子文件夹,然后开始下载很多库,例如Laravel,Symfony和Twig(这些只是我所知道的)。

这首先发生在我试图要求Twig的时候。我刚刚删除了无关的图书馆并保留了Twig。

有没有人有什么想法造成这种情况?

+1

什么在你的'composer.json'文件 – Steve

+1

{ “要求”:{ “laravel/laravel”: “^ 5.3” }} 我甚至没有安装laravel –

+1

删除了这一行,然后再试一次。你是如何生成文件的第一个地方 – Steve

回答

2

如果作曲家下载和安装的东西,你没有问,那东西大概要求通过下列之一:

  • 一些在composer.json需要定义声明文件
  • 您正在安装的东西所需的依赖项。我不熟悉树枝,但它可能需要laravel,symfony等。人。如果你打算使用这些框架中的一个,我建议你在安装之前先安装它。
  • 一些缓存的东西的地方,像上面

作曲家提到composer.lock文件创建一个名为供应商作为家中的所有库/包,它取出并安装的文件夹中。

1

最好的方法是删除一切,从头开始,因为你还没有真正做了很多工作,但(正如你所说,你composer.json文件是空的):

$ rm -rf vendor/ 
$ rm composer.json 
$ rm composer.lock 

然后,开始作曲和再次安装依赖项:

$ composer init 
$ composer require ramsey/uuid 

您现在应该已经可以正常工作了。

我的假设是,您正在运行composer install基于较旧的composer.lock文件,该文件将重新下载依赖关系。

2

您可以随时检查,为什么作曲家安装的东西,通过runnung

$ composer why webmozart/assert 

该命令将显示,其中的根本要求,取决于封装(webmozart/assert在这种情况下)。