如何将一个composer包安装到/src目录中?

4

我需要如何修改composer.json文件以直接安装到src目录下(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"

}


1
我完全同意被接受的答案。然而,有些情况下你别无选择。我有什么选项可以在“src”中安装依赖项而不是“vendor”? - BetaRide
1
你最终解决了这个问题吗?我也遇到了同样的问题,想知道你是否找到了将Bundle放入src/目录的解决方案。 - Phill Pafford
2个回答

8
实际上,在src目录安装供应商包不是一个好主意,因为供应商包不应该被编辑,而src目录是用于在开发过程中编辑的代码。
我能想到的一个原因是您想修改这些软件包。如果是这个问题,你最好使用git子模块,因为composer只有单向流动,意味着更改只能来自供应商包的源,没有上游到源。
我在我的项目中为不是特定项目并且驻留在它们自己的git存储库中但在项目中积极开发的束使用git子模块。

好的,你说得对。谢谢你的建议!# - bodokaiser
6
实际上这是错误的。如果你指定了 --prefer-source,Composer 将尝试克隆 Git 存储库并检出 SVN 存储库以供您开发和提交到这些存储库中。 - naderman
哦...我不知道这个。在sf 2.0中,我曾经遇到过旧供应商脚本的问题,即仓库被检出为只读状态,无法进行提交/推送。你能否提供一个示例,说明如何包含GitHub仓库以便我可以推送回去?谢谢。 - room13
只需运行 php composer.phar install --prefer-source,它就会为您完成。 - naderman
我想通过运行命令composer require company/bundle:1.*来安装bundle以便进行部署,有什么建议吗? - Phill Pafford
我知道你正在建议如何做这种事情的最佳实践。然而,你应该尝试提供一个实际的答案来回答这个问题,因为它可能适用于其他用户在类似但略有不同的情况下,并且这样做不会造成任何安全风险。 - Charles Sprayberry

5

PHP/Symfony项目的src目录通常仅用于该项目的代码。安装为依赖项的代码将放入vendor目录。

这样可以轻松跟踪哪些代码是项目本身的一部分,哪些代码维护在单独的存储库中。

因此,不应将来自单独存储库的bundle安装到您的src目录中。在Symfony中,如果将bundle放置在与许多核心框架bundles相同的vendor目录中,它们将正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接