我希望我的CakePHP项目能够使用最佳实践。目前我们已将PHP依赖项检入我们的项目回购中,我不喜欢这样。
我希望项目能够利用Composer,但我不了解正确的策略。
首先,有 official CakePHP repo :
composer.json
位于项目根目录中。/vendors/
和/plugins/
,它们位于.gitignore
下。/app/Vendor/
和/app/Plugin/
不会被忽略。然后,来自FriendsOfCake的 app-template 样板:
composer.json
位于项目根目录中。/vendors/
或/plugins/
。/app/Vendor/
和/app/Plugin/
位于.gitignore
。最后,还有 cakephp-composer ,一个活跃的项目。这意味着:
composer.json
位于/app/
。/app/Plugin/
。.gitignore
策略,但应该忽略/app/Vendor/
和/app/Plugin/
的插件作者says。cakephp-composer是最奇怪的事情。克隆我的项目后,我该如何获取CakePHP和cakephp-composer?
我想实现以下目标:
我不理解并要求解释以下事项:
.gitignore
下应放置哪些文件夹?composer.json
以使用Composer获取插件,特别是如果我不使用cakephp-composer?它可能就像在require
下提到包名一样简单,但我如何告诉Composer插件是否应该在app/Vendor/
和app/Plugin/
之下?哦,他们应该去哪里?有关Composer提取的CakePHP插件示例,请执行haml。它是我需要的前端工作,它有自己的Composer依赖。
答案 0 :(得分:4)
好的,那里有几个问题......我会尝试回答一些问题。
首先,你应该清楚你想要使用CakePHP 2.X或CakePHP 3.0。我假设你在谈论现有的项目,你的意思是Cake 2.X--它并没有考虑到作曲家。 Cake 3.0是在考虑到作曲家的情况下构建的,所以如果升级到那个是一个选项,我认为它会更好(我还没有使用过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/"
行 - 我已配置编辑器,默认情况下,将其放在我的app/Vendor/
文件夹中。<\ n / p>
.gitignore的内容......我们会回过头来。
不,你不需要这个。
查看第"installer-paths": {
行?我已经配置了编辑器将特定的CakePHP插件放在Cake的插件目录中,而不是我在1中提到的默认app/Vendor/
。
对于CakePHP插件 - 请参阅4.对于CakePHP本身,我个人没有完成它。我确实尝试了一下,发现设置与我的一个插件没有很好地配合,所以我放弃了它。但是,您应该能够使用与上述相同的原则。
现在,回到2.你的.gitignore应该是什么?任何内容都完全由作曲家维护 - 在我的例子中,app/Vendor/
和app/Plugin/
。这假设这些文件夹的所有内容都由作曲家维护。如果你有例如。您手动添加的一个插件,然后您无法忽略整个文件夹 - 您只需要忽略与作曲家一起安装的特定插件。
PS - 我个人删除了根vendor/
和plugins/
文件夹 - 我根本不使用它们。