Как добавить пакет в пользовательский пакет Laravel? - PullRequest
0 голосов
/ 10 ноября 2018

Я создаю пользовательский пакет Laravel, для которого требуется пакет guzzlehttp/guzzle. Ниже приведен мой файл composer.json:

{
  "name": "lomse/awesomePackage",
  "description": "this an awesome package",
  "type": "library",
  "license": "MIT",
  "authors": [
    {
      "name": "Selom",
      "email": "awesome@gmail.com"
    }
  ],
  "minimum-stability": "dev",
  "require": {
    "guzzlehttp/guzzle": "^6.3"
  },
  "autoload": {
    "psr-4": {
      "Lomse\\AwesomePackage\\": "src/"
    }
  }
}

Ниже приведено содержимое моего AwesomeProvider.php файла:

<?php

namespace Lomse\AwesomePackage;

use GuzzleHttp\Client;
use Illuminate\Support\ServiceProvider;

class AwesomeProvider extends ServiceProvider
{
    public function boot(){
    }

    public function register()
    {
        $this->app->singleton(Awesome::class, function ($app) {
            return new Awesome(new Client); //Class 'GuzzleHttp\Client' not found
        });
    }
}

Я продолжаю получать Class 'GuzzleHttp\Client' not found. Что я делаю не так?

1 Ответ

0 голосов
/ 16 ноября 2018

Итак, это оказывается довольно просто. Я выделил шаги, которые нужно предпринять, чтобы решить эту проблему. Надеюсь, это поможет любому, у кого возникла такая же проблема.

  1. Мне пришлось отправить свой код в репозиторий lomse/awesome-package на Github
  2. затем указали preferred-install как dist в свойстве ./lomse/awesome-package/package.json config`:

    "config": { "предпочитаемый-установить": "dist" }

Полный код

{
  "name": "lomse/awesome-package",
  "description": "this an awesome package",
  "type": "library",
  "license": "MIT",
  "authors": [
    {
      "name": "Selom",
      "email": "awesome@gmail.com"
    }
  ],
  "minimum-stability": "dev",
  "require": {
    "guzzlehttp/guzzle": "^6.3"
  },
  "autoload": {
    "psr-4": {
      "Lomse\\AwesomePackage\\": "src/"
    }
  },
  "config": {
    "preferred-install": "dist"
  }
}

В корне package.json укажите хранилище вашего пакета следующим образом:

"repositories": [
   {
      "type": "git",
      "url": "git@github.com:lomse/awesome-package.git"
   }
]

Также добавьте репозиторий в свойство package.json require, как показано ниже:

"lomse/awesome-package": "dev-master"

В своем корневом каталоге запустите приведенный ниже код для обновления ваших зависимостей. Это приведет к клонированию репо lomse/awesome-package в папку вашего поставщика и установит любые другие зависимости, необходимые для вашего пакета:

composer update -vvv

-vvv для отладки

enter image description here

enter image description here

...