我有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的分支与主分支?
答案 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目录。