【问题标题】:How can I install a composer package into the /src dir?如何将 composer 包安装到 /src 目录中?
【发布时间】:2012-06-21 17:55:00
【问题描述】:

如何修改我的 composer.json 以直接安装到 src-dir (Symfony/src)?

{
"name": "acme/example-bundle",
"type": "symfony-bundle",
"license": "MIT",
"require": {
    "php": ">=5.3.2",
    "symfony/framework-bundle": "2.1.*"
},
"suggest": {
    "doctrine/doctrine-bundle": "*"
},
"autoload": {
    "psr-0": { "Acme": "src/" }
},
"target-dir": "../../src/Acme/ExampleBundle"

}

【问题讨论】:

  • 我完全同意接受的答案。但是,在某些情况下您别无选择。我必须在 src 而不是 vendor 中安装依赖项?
  • 你有没有得到这个工作?我有同样的问题,想知道你是否找到了将 Bundle 放入 src/ 目录的解决方案

标签: php symfony composer-php


【解决方案1】:

实际上,将供应商软件包安装到 src 目录并不是一个好主意,因为不应编辑供应商软件包,而 src 目录是用于在开发过程中编辑的代码。

我想到的一个原因是您想要修改这些包。如果这是重点,您最好不要使用 git 子模块,因为 composer 只有单向流,这意味着更改只能来自供应商包的源,并且源没有上游。

我将 git 子模块用于我的项目中的包,这些包不是特定于项目的,因此驻留在自己的 git 存储库中,但在项目期间积极开发。

【讨论】:

  • 好吧,你说得对。谢谢你的建议!#
  • 这实际上是不正确的。如果您指定 --prefer-source,composer 将尝试克隆 git 存储库并为您的供应商签出 svn 存储库,以便您可以在这些存储库中开发和提交。
  • 哦...不知道。我在 sf 2.0 中遇到了旧供应商脚本的问题,即存储库将以只读方式签出,并且无法提交/推送。您能否发布一个示例,说明如何包含 github 存储库以便我可以回推?谢谢
  • 只需运行 php composer.phar install --prefer-source ,它会为您完成。
  • 我想运行命令 composer require comapny/bundle:1.* 并以这种方式安装包以进行部署,建议?
【解决方案2】:

PHP/Symfony 项目的 src 目录通常只用于该项目的代码。您作为依赖项安装的代码进入供应商目录。

这使得跟踪哪些代码是项目本身的一部分以及哪些代码在单独的存储库中维护变得容易。

因此,您不应将单独存储库中的捆绑软件安装到您的 src 目录中。如果 Symfony 中的 Bundle 像许多核心框架 bundle 一样位于供应商目录中,它们就可以正常工作。

【讨论】:

    猜你喜欢
    • 2015-07-11
    • 1970-01-01
    • 2013-10-08
    • 2018-12-30
    • 1970-01-01
    • 2016-11-14
    • 2017-01-08
    • 2014-10-17
    • 2012-11-01
    相关资源
    最近更新 更多