【问题标题】:install from github using composer and no composer.json in github使用composer从github安装,github中没有composer.json
【发布时间】:2014-07-31 04:11:06
【问题描述】:

我尝试使用 Composer 安装插件 CakePHP-CSV。我从 ProLoser/CakePHP-CSV 分叉了它。 我不想将它安装在供应商中,而是安装在插件文件夹中,并且名称为 Csv,而不是默认的插件名称。我尝试在 composer.json 中使用额外的,但我尝试过的是将它安装在项目的 Vendor 文件夹中。

"repositories": [
    {
        "type": "package",
        "package": {
            "name": "CakePHP-CSV/Csv",
            "version": "dev-master",
            "source": {
                "url": "https://github.com/sela/CakePHP-CSV",
                "type": "git",
                "reference": "origin/master"
            }
        }
    }
],
"require": {
    "CakePHP-CSV/Csv": "dev-master",
},
"config": {
    "vendor-dir": "Vendor"
},
"extra": {
    "installer-paths": {
        "Plugin/Cvs": ["Plugin/cvs"]
    }
}            

【问题讨论】:

    标签: cakephp github composer-php


    【解决方案1】:

    我需要更多的代码空间,所以我自己回答。以下代码有效,我不需要分叉代码。

    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "ProLoser/CakePHP-CSV",
                "version": "1.0",
                "type": "cakephp-plugin",
                "dist": {
                    "url": "https://github.com/ProLoser/CakePHP-CSV/archive/master.zip",
                    "type": "zip"
                }
            }
        }
    ],
    "require": {
        "composer/installers": "~1.0.0",
        "ProLoser/CakePHP-CSV": "1.*"
    },
    "config": {
        "vendor-dir": "Vendor"
    }
    

    【讨论】:

      【解决方案2】:

      你需要让你的包依赖composer/installers

      来自Composer's documentation

      如果您是包作者并希望将包安装到自定义目录,只需要求composer/installers 并设置适当的type。如果您的包是为特定框架(例如 CakePHP、Drupal 或 WordPress)设计的,这很常见。这是 WordPress 主题的示例 composer.json 文件:

      {
          "name": "you/themename",
          "type": "wordpress-theme",
          "require": {
              "composer/installers": "~1.0"
          }
      }
      

      后来(我在重要部分添加了斜体):

      作为软件包使用者,您可以通过配置installer-paths extra 来设置或覆盖需要 composer/installers 的软件包的安装路径。一个有用的示例是 Drupal 多站点设置,其中应将包安装到您的站点子目录中。

      注意extra is simply a place to put arbitrary data:

      scripts 消费的任意额外数据。

      这几乎可以是任何东西。要从脚本事件处理程序中访问它,您可以:

      $extra = $event->getComposer()->getPackage()->getExtra();
      

      第二部分很重要;某些东西必须检索额外的数据并对其进行处理。在这种情况下,某物是composer/installers

      【讨论】:

      • 谢谢。首先,您复制了示例 composer.json 我需要将 composer.json 放在哪里?我将代码分叉到我自己的存储库,但是如果我不分叉它并为插件创建composer.json,有没有办法做到这一点?我的本地机器上已经有 1 个 composer.json。
      • @SelaYair,有两个相关的composer.json 文件。第一个用于,这个必须需要composer/installers。通常包作者会提供这个,但是这个特定的库似乎没有这样做,所以你可能必须自己创建它。分叉存储库是一种很好的方法,尽管您将负责将上游更改合并到您的分叉中。
      • 另一个composer.json 用于您的应用程序,这取决于CSV 库和您需要的任何其他库。您可以在此处放置 extra / installer-paths 位以重新定位 CSV 库。
      • 请注意,有很多关于创建 Composer 包以及composer/installers 的文档。你应该读一下;您可能需要对上游库进行其他更改才能使其正常运行。
      猜你喜欢
      • 1970-01-01
      • 2017-07-23
      • 2018-03-16
      • 2016-11-14
      • 2014-12-28
      • 2015-07-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多