【问题标题】:Prevent Composer from installing a second copy of CakePHP/2阻止 Composer 安装 CakePHP/2 的第二个副本
【发布时间】:2017-05-08 08:44:41
【问题描述】:

我想使用 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 目录中。这很烦人,因为它占用了磁盘空间并妨碍了 IDE 的代码智能。

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

【问题讨论】:

  • 如果您不想要的话,只需从 composer.json 文件中删除 CakePHP?磁盘空间?严重地?现在是 2017 年。给我一个地址,我会给你一个旧的 16gb SD 卡,然后你可以安装大量的 CakePHP 副本。 ;) 或者在 composers 安装后文件中添加一个脚本,该脚本将删除 CakePHP 文件夹。
  • 开始使用 Composer 安装 CakePHP 并删除您本地的库副本不是更好吗?这将使维护您的应用程序和使 CakePHP 保持最新状态变得更加容易。然后你可以使用 Composer 安装任何你需要的 CakePHP 插件。
  • @ÁlvaroGonzález 是的,有可能,我已经通过 Composer 安装 CakePHP 2 几年了。详情请见docs。你会发现有些 Cake 插件会包含 cakephp/cakephp 要求,所以如果你通过 Composer 安装它们,你真的需要通过 Composer 安装核心库。
  • @burzum 大多数人都有乱七八糟的习惯,并不关心充满垃圾的项目源代码树(有时垃圾甚至被部署到生产环境并发送到浏览器),但我有点疯狂。当我要求我的 IDE 打开 AppController 时,我不想每次都决定哪一个是好的 ;-)
  • @drmonkeyninja 这很可能是解决方案——我忽略了那一章。结果安装略有不同(现在 CakePHP 核心是我应用程序中的一个子目录,而不是相反),但它可能更有意义。

标签: cakephp composer-php cakephp-2.9


【解决方案1】:

CakePHP 之所以被列为核心依赖项,首先是因为它实际上可以安装CakePHP/2.x itself。在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 

如果您选择传统(也称为手动)安装,您将不再满足依赖关系,因此由您决定:

  • 保持原样,并在编辑器/IDE 中将多余的副本标记为已忽略
  • app/composer.json 中删除依赖项并祈祷您不需要需要它的库

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-05
    • 1970-01-01
    • 1970-01-01
    • 2015-01-27
    • 2017-07-23
    • 1970-01-01
    • 2019-06-25
    • 2013-07-06
    相关资源
    最近更新 更多