2

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

  • 建造/
  • 鞋底/
  • 例子/
  • 许可证/
  • 截图/

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

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

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

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

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

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

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

4

1 回答 1

1

无论您运行什么composer installcomposer require通常都将放在供应商目录中。Composer 本质上拥有供应商目录。有很多方法可以将这些项目放在其他地方,但这违背了 composer 的目的,即帮助您管理所有交互库中的版本更改。

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

于 2015-07-02T06:50:46.677 回答