gpt4 book ai didi

php - 将 Composer 用于 CakePHP 和依赖项 : overall strategy, 项目结构和 `.gitignore`

转载 作者:可可西里 更新时间:2023-11-01 01:01:22 25 4
gpt4 key购买 nike

我希望我的 CakePHP 项目使用最佳实践。目前,我们已将 PHP 依赖项检查到项目的存储库中,我不喜欢这样。

我希望该项目利用 Composer,但我不了解正确的策略。

首先是 official CakePHP repo :

  • composer.json 在项目根目录下。
  • /vendors//plugins/,它们在.gitignore下。
  • /app/Vendor//app/Plugin/ 不会被忽略。

然后,有一个 app-template 来自 FriendsOfCake 的样板文件:

  • composer.json 在项目根目录下。
  • 没有 /vendors//plugins/
  • /app/Vendor//app/Plugin/.gitignore 下。

最后是 cakephp-composer ,一个活跃的项目。这意味着:

  • composer.json/app/ 中。
  • 插件本身应该手动安装到 /app/Plugin/ 中。
  • Readme 没有解释.gitignore 策略,但是插件作者says /app/Vendor//app/Plugin/ 应该被忽略。

cakephp-composer 是最奇怪的东西。克隆我的项目后,我应该如何获取 CakePHP 和 cakephp-composer?

我想实现以下目标:

  1. 我的项目仓库只包含项目本身的源代码。在其他地方版本化的任何代码,例如。 G。 CakePHP 框架和 CakePHP 插件不应出现在我的存储库中。
  2. 将项目的存储库克隆到新位置后,我想使用单个 Composer 命令获取所有 PHP 依赖项,包括 CakePHP 及其插件。无需手动下载/克隆。该项目应在 Composer 完成其工作后立即开始工作。
  3. 我真的很喜欢 app-template来自 FriendsOfCake 的样板。对我来说它看起来简单而合理。所以我希望我的项目结构尽可能接近应用程序模板。

我不明白并要求解释以下事情:

  1. Composer 将依赖项提取到已配置的文件夹在哪里? Composer 文档提到“PSR-4”,而我(作为一名来自 Ruby 世界的前端开发人员)完全不知道那是什么。
  2. 什么文件夹应该放在.gitignore下?
  3. 我真的需要吗cakephp-composer ?我希望我没有!
  4. 如何配置 composer.json 以使用 Composer 获取插件,尤其是在我不使用 cakephp-composer 的情况下?它可能就像在 require 下提到包名称一样简单,但是我如何告诉 Composer 插件是否应该放在 app/Vendor/app/Plugin/下?哦,他们应该去哪里?
  5. 如何将 Composer 获取的 CakePHP 和 CakePHP 插件正确地包含到我的项目中?

以 Composer 获取的 CakePHP 插件为例,取 haml .这是我的前端工作所需要的,它有自己的 Composer 依赖项。

最佳答案

好的,这里有几个问题......我会尽量回答一些。

首先,您应该清楚要使用 CakePHP 2.X 还是 CakePHP 3.0。我假设既然你在谈论一个现有的项目,你的意思是 Cake 2.X - 它不是在考虑 Composer 的情况下构建的。 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"],
}
}

}
  1. 请参阅行 "vendor-dir": "app/Vendor/" - 这是我配置 composer 以默认将其包放置在我的 app 中的位置/Vendor/ 文件夹。

  2. .gitignore 中的内容......我们会回来讨论它。

  3. 不,你不需要这个。

  4. 请参阅行 "installer-paths": {?这就是我配置 composer 以将特定 CakePHP 插件放入 Cake 插件目录的位置,而不是我在 1 中提到的默认 app/Vendor/

  5. 对于 CakePHP 插件 - 参见 4。对于 CakePHP 本身,我还没有亲自做过。我曾尝试过一次,发现设置不能很好地与我的一个插件一起玩,所以我放弃了。但是,您应该能够使用与上述相同的原则。

现在,回到 2. 你的 .gitignore 中应该有什么?任何内容完全由 Composer 维护的东西——在我的例子中,就是 app/Vendor/app/Plugin/。假设这些文件夹的所有内容都由 Composer 维护。如果你有例如。一个你手动添加的插件,那么你就不能忽略整个文件夹——你必须只忽略随 composer 安装的特定插件。

PS - 我个人删除了根 vendor/plugins/ 文件夹 - 我根本不使用它们。

关于php - 将 Composer 用于 CakePHP 和依赖项 : overall strategy, 项目结构和 `.gitignore`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24767608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com