我希望我的CakePHP项目使用最佳实践。目前我们把PHP依赖项签入到项目的repo中,我不喜欢这样。
我希望项目利用Composer,但我不明白正确的策略。
首先,有官方CakePHP repo:-
composer.json
在项目根目录。 - 有
/vendors/
和/plugins/
,它们在.gitignore
下面。 -
/app/Vendor/
和/app/Plugin/
不被忽略。
-
composer.json
在项目根目录。 - 没有
/vendors/
或/plugins/
. -
/app/Vendor/
和/app/Plugin/
在.gitignore
下。
最后,还有cakephp-composer,一个活动项目。这意味着:
-
composer.json
在/app/
. - 插件本身应该手工安装到
/app/Plugin/
. - 自述没有解释
.gitignore
策略,但插件作者说/app/Vendor/
和/app/Plugin/
应该被忽略。
cakephp-composer是最奇怪的东西。我应该如何获取CakePHP和CakePHP作曲家克隆我的项目后?
我想实现以下目标:
- 我的项目仓库只包含项目本身的源代码。任何在其他地方版本的代码,例如CakePHP框架和CakePHP插件,不应该出现在我的repo中。
- 克隆我的项目的repo到一个新的位置后,我想获取所有的PHP依赖,包括CakePHP和它的插件,与一个单一的Composer命令。无需手动下载/克隆。项目应该在Composer完成其工作后立即开始工作。 我真的很喜欢FriendsOfCake的应用模板样板。在我看来,它简单而合理。所以我希望我的项目结构尽可能接近app-template。
我不明白,请解释以下事情:
- Composer获取依赖项到配置中的文件夹在哪里?Composer文档提到了"PSR-4",而我(作为一个来自Ruby世界的前端开发人员)一点也不知道那是什么。
-
.gitignore
下面应该放什么文件夹? 我真的需要cakephp-composer吗?我希望我没有! - 我如何配置
composer.json
获取插件与作曲家,特别是如果我不使用cakephp-composer?它可能就像在require
下提到包名一样简单,但是我如何告诉Composer插件是否应该在app/Vendor/
和app/Plugin/
下运行?哦,他们应该去哪里呢? - 我如何正确地包括CakePHP和CakePHP插件获取的作曲家到我的项目?
对于Composer要获取的CakePHP插件,以haml为例。这是我需要我的前端工作,它有自己的Composer依赖。
好的,这里有几个问题…我试着回答几个。
首先,您应该清楚是否要使用CakePHP 2。或CakePHP 3.0。既然你说的是现有项目,我猜你指的是蛋糕2。X -它不是为了作曲家而建的。Cake 3.0是用composer构建的,所以如果升级到它是一个选择,我想它会更好(我自己还没用过3.0)
下面是一个简化的composer.json
文件示例,来自我的一个项目:
{
"name": "my-project",
"require": {
"cakedc/migrations": "2.2.2",
"cakephp/debug_kit": "2.2.1",
},
"require-dev": {
"phpunit/phpunit": "3.7.*"
},
"config": {
"vendor-dir": "app/Vendor/"
},
"extra": {
"installer-paths": {
"app/Plugin/Migrations": ["cakedc/migrations"],
"app/Plugin/DebugKit": ["cakephp/debug_kit"],
}
}
}
见
"vendor-dir": "app/Vendor/"
行-这是我配置composer将它的包,默认情况下,在我的app/Vendor/
文件夹。.gitignore…
你不需要这个
见
"installer-paths": {
?在这里,我配置了composer将特定的CakePHP插件放在Cake的插件目录中,而不是我在1. 中提到的默认的CakePHP插件-见4。对于CakePHP本身,我还没有亲自做过。我确实尝试过一次,发现设置不能很好地与我的一个插件一起运行,所以我放弃了它。但是,您应该能够使用与上面相同的主体。
app/Vendor/
。现在,回到2。你的礼物里应该有什么?任何内容完全由作曲家维护的内容-在我的情况下,是app/Vendor/
和app/Plugin/
。假设这些文件夹的所有内容都由composer维护。如果你有。如果你手动添加了一个插件,那么你就不能忽略整个文件夹——你只能忽略与composer一起安装的特定插件。
PS -我个人删除根vendor/
和plugins/
文件夹-我根本不使用它们。