阻止 Composer 安装 CakePHP/2 的第二个副本

Prevent Composer from installing a second copy of CakePHP/2

我想使用 Composer 在我的 app 目录中安装一些库,但是 src/app/composer.json 将 CakePHP 列为非开发依赖项:

"require": {
    "php": ">=5.3.0",
    "ext-mcrypt": "*",
    "cakephp/cakephp": "~2.9"
},
"require-dev": {
    "phpunit/phpunit": "3.7.*"
},

这导致 CakePHP 的第二个副本安装到我的 app/Vendor 目录中。这很烦人,因为它使用光盘 space 并且在 IDE 的代码智能的道路上。

防止这种情况的最佳方法是什么?完全删除依赖项是否安全?

之所以首先将 CakePHP 列为核心依赖项,是因为实际上可以安装 CakePHP/2.x itself. It's explained in the Advanced Installation 章节。

除了使用 Composer 之外,初始设置还需要一些额外的手动步骤,这些步骤在 tarball 安装中不需要,但没有明确记录。您还必须使用 cake bake shell 来创建您的初始应用程序文件(而不是只是开始输入已经存在的文件),这会产生与您可能习惯的结构不同的结构:

my_project/  My stuff comes here
    <my app files>
    Vendor/
        cakephp/
            cakephp/

... 而不是:

my_project/
   <cakephp files>
   app/  My stuff used to be here 

如果您选择传统(又名手动)安装,您将不再满足依赖关系,因此您可以自行决定要做什么:

  • 保持原样并在 editor/IDE
  • 中将多余的副本标记为忽略
  • app/composer.json 删除依赖项并祈祷你不需要一个需要它的库