【问题标题】:Installing github package into Laravel project using composer使用 composer 将 github 包安装到 Laravel 项目中
【发布时间】:2016-11-14 09:43:49
【问题描述】:

我需要使用 composer 从 github url 安装自定义包。我的基于 Laravel 5.2 的项目是全新安装的。

我需要的github项目是: https://github.com/cmcdonaldca/ohShopify.php

我还是 Laravel 和作曲家的新手,需要尽可能明确步骤的帮助。

有什么帮助吗?

【问题讨论】:

    标签: php laravel composer-php laravel-5.2


    【解决方案1】:

    我将使用这个repo 来解释这些步骤。原因是因为您包含的 repo 没有 composer.json 在这种情况下我认为不可能使用 composer 安装

    1. 在 composer.json 中添加仓库

      "repositories": [
         {
           "url": "https://github.com/notmaintained/shopify.php",
      
            "type": "git"
          }
       ],
      
    2. dev后面加上分支名的包名:

      "sandeepshetty/shopify.php" : "dev-master"
      

    编辑:

    刚刚测试了这个。由于它是未维护的包,因此存在一些错误,但您应该了解使用 git 安装 composer 包的想法。

    【讨论】:

    • 这个答案不完整...sandeepshetty 来自哪里?
    【解决方案2】:

    对上述答案的改进。

    1. 在 composer.json 中添加仓库

      "repositories": [
          {
              "url": "https://github.com/notmaintained/shopify.php",
      
              "type": "git"
          }
      ],
      
    2. 在require中添加包名和dev后面的分支名:

      "sandeepshetty/shopify.php" : "dev-master"
      

    软件包名称有时会与用户名/repo 名称混淆。 始终打开 composer.json 文件以获取实际的包名称。 我花了很多时间环顾四周。

    【讨论】:

    • 请重新格式化您的答案,因为它被自动格式化弄乱了
    【解决方案3】:

    Composer 使用来自存储库 https://packagist.org/ 的包。你真的不能直接从 github 使用 github 包。

    这里有 2 个选项。

    1. 使用https://packagist.org/ 上提供的包与shopify API 集成。我查看了 packagist 并找到了 rocket-code/shopifyphpish/shopify。要将它们添加到您的 laravel 项目中,请在包含 composer.json 文件的文件夹中使用以下命令:

      composer require rocket-code/shopify

    2. 您可以使用 git 存储库创建自己的 packagegist 包。所以你将克隆 repo,然后创建你自己的 packagist 帐户。所以注册,获得一个 packagegist 帐户,上传文件,然后在你的 laravel 项目中使用它。

    我建议您使用现有的 composer 包,因为它消除了管理您自己的包的责任。

    【讨论】:

    • @geckob 在答案中给出了第三个选项。这就是您包含私有包或不包含在 packagist 中的包的方式。
    • 我不确定这是否真的回答了这个问题。
    【解决方案4】:

    我无法在任何地方得到这个问题的答案,这也难怪。可以这么说,您对作曲家如何在幕后工作有所了解,因为您必须明确告诉作曲家您希望它做什么。因此,我建议您阅读文档here
    接下来,如果您已经安装了其他软件包,请查看 vendor/composer/installed.json 文件。这将使您了解 Composer 在将命名空间添加到类映射时要查找的内容。

    我正在开发一个 laravel 包,我想在不使用 packagist 的情况下导入一个 repo,但我被困了一段时间。我最终得到了它,这就是我所拥有的。

    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "example/package",
                "version": "0.1.0",
                "dist": {
                    "url": "https://github.org/name/package/src/master",
                    "type": "git"
                },
                "source": {
                    "url": "https://github.org/name/package",
                    "type": "git",
                    "reference": "master"
                },
                "autoload": {
                    "psr-4": {
                        "Example\\Package\\": "src/"
                    }
                },
                "extra": {
                    "laravel": {
                        "providers": [
                            "Example\\Package\\ExamplePackageProvider"
                        ]
                    }
                }
            }
        }
    ],
    "require": {
        "exmaple\package": "0.1.0"
    }
    

    运行composer install 检查 /vendor/composer/installed.json 它应该显示...

    {
        "name": "exmaple\package",
        "version": "0.1.0",
        "version_normalized": "0.1.0.0",
        "source": {
            "type": "git",
            "url": "https://github.org/name/package/src/master",
            "reference": "master"
        },
        "dist": {
            "type": "git",
            "url": "https://github.org/name/package"
        },
        "type": "library",
        "extra": {
            "laravel": {
                "providers": [
                    "Example\\Package\\ExamplePackageProvider"
                ]
            }
        },
        "installation-source": "source",
        "autoload": {
            "psr-4": {
                "Example\\Package\\": "src/"
            }
        },
        "install-path": "../exmaple/package"
    }
    

    然后检查 vendor/autoload_classmap.php 你应该会看到命名空间。

    现在,如果您提交并推送您的软件包存储库并想要更新您的测试存储库中的软件包,您需要更改版本。

    ...
        "package": {
            "name": "example/package",
            "version": "0.2.0",
            "dist":
    ...
    

    然后运行composer update example/package

    【讨论】:

      猜你喜欢
      • 2014-12-28
      • 2015-07-21
      • 2017-07-23
      • 2015-06-13
      • 2014-07-03
      • 1970-01-01
      • 2021-02-08
      • 2018-06-11
      相关资源
      最近更新 更多