如何将我的composer包配置为指向存储库的特定子目录?

时间:2015-01-24 15:58:08

标签: php composer-php packagist

我有Github repository,我最近提交给Packagist。我的存储库的顶级目录如下:

  
      
  • 构建/
  •   
  • bootsole /
  •   
  • 实例/
  •   
  • 许可证/
  •   
  • 截图/
  •   

bootsole子目录是包含由作曲家管理/自动加载的类的实际目录。

我尝试创建一个新项目来测试包。在项目中,我的composer.json如下:

{
    "require": {
        "php": ">=5.4.0",
        "alexweissman/bootsole": "0.2.0"
    }
}

我运行composer install,它会获取bootsole及其依赖项valitron。但是,它将bootsole放在vendor/alexweissman/bootsole/中,而且它将整个存储库放在该目录中 - 而不仅仅是bootsole子目录。

是否可以将程序包配置为仅包含子目录bootsole的内容(即省略build/examples/等)?

更新:This question似乎表明这是不可能的(尽管这个问题已经超过一年了)。它建议我告诉git忽略归档中的其他目录,为了不使用composer的开发人员的利益,我不愿意这样做。

是否有可能创建一个单独的分支,只包含bootsole/子目录,将Composer指向该分支,并以某种方式自动同步Composer的分支与主分支?

1 个答案:

答案 0 :(得分:1)

无论您运行composer install,还是composer require on,通常都会放在供应商目录中。 Composer基本上拥有供应商目录。有些方法可以将这些项目放在其他地方,但它会破坏作曲家的目的,即帮助您管理所有交互库中的版本更改。

但是,另一种选择是运行composer create-project。这将基本上将项目克隆到您告诉它的任何位置,然后加载require文件的composer.json部分中的所有内容。我的猜测是你需要两个项目,一个用于初始安装所有目录,你将告诉用户运行composer create-project,另一个只是bootsole目录,你需要在第一个project的composer.json文件,将放在/ vendor / alexweissman / bootsole中。您需要更改代码以在那里查找bootsole目录。