如何使用composer只加载解决依赖关系所需的最小文件



我是作曲家的新手!

示例;当使用composer时,比如composer需要smarty/smarty,我会得到各种各样的像一样安装的目录

  • 供应商\smarty\smarty\lxer

但我只需要smarty\libs,这个smarty/libs应该显示在webroot/project/smarty/libs的现有项目目录中。

本质上,我能指定这个吗,这样作曲家就能理解我我需要什么,把它放在我需要的地方?

本质上,我可以指定它吗?这样composer就可以得到我需要的东西,并把它放在我需要的地方?

是的,但它需要额外的配置。您已经拥有的(以及Composer的用途(:

  1. 您确定了一个Composer包,其中包含您感兴趣的文件目录
  2. 您已经在项目中使用Composer实用程序处理了该包,并相应地更新了项目配置

现在在默认设置中,Composer安装在供应商目录中。该目录通常不是您项目的一部分,因此名称为";供应商";,并且经常被排除在外。

现在,您想从供应商文件夹(在已配置的项目中(将文件目录导入到项目中。

这基本上是一个文件复制操作,有关递归复制文件目录的命令,请参阅系统编程手册(或参阅PHP手册(。

然后采用您的项目安装说明来(重新(创建目标目录,并在命令之后复制文件来(重新-(创建供应商文件夹(也许您使用的是composer install(。

如果您想用Composer完成这项工作(这是可能的(,请在项目配置中添加一个安装后事件脚本(如果您不仅想合并文件,还想对项目中的目录使用Composer自动加载器,例如通过复制供应商文件新建的文件夹,则预自动加载转储也很有用(。

执行您的设置说明。

然后添加您的更改,查看它们并将它们提交到项目历史记录中。


或者 ,您也可以忽略整个供应商文件夹,只忽略您不感兴趣的部分,然后创建一个引用,使项目目标目录实际上是供应商感兴趣的子目录的相对符号链接。这需要您的系统以及软件配置管理软件支持符号链接(例如Git(。作曲家本身可以很好地处理这两种方式。


这里的要点是:您只在开发时需要Smarty Composer依赖项,因此您添加它是为了要求开发,而不是要求。

如果这还不能为您提供足够的隔离,您可以创建另一个Composer项目配置,并将其名称与COMPOSER环境参数一起传递。您还可以使用该配置指定一个非标准的Composer供应商目录名,然后在那里执行操作(这可能是在现有项目中尝试的最佳方法(。

相关内容

  • 没有找到相关文章

最新更新