Где я должен положить файл composer.json? - PullRequest
0 голосов
/ 27 мая 2018

Я пытаюсь использовать composer для библиотеки, и в документах мне сказали поместить строку в мой файл composer.json (require : xxxx), но в проекте уже есть файл composer.json.

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

Когда я добавляю require то, что мне нужно (setasign/fpdi-fpdf": "^2.0), я получаю эту ошибку (я получаю ту же ошибку с командой composer require setasign/fpdi-fpdf):

composer require setasign/fpdi-fpdf
Using version ^2.0 for setasign/fpdi-fpdf
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - Installation request for setasign/fpdi No version set (parsed as 1.0.0) -> satisfiable by setasign/fpdi[No version set (parsed as 1.0.0)].
    - setasign/fpdi-fpdf v2.0.0 requires setasign/fpdi ^2.0 -> satisfiable by setasign/fpdi[v2.0.0, v2.0.1, v2.0.2, v2.0.3].
    - Can only install one of: setasign/fpdi[v2.0.0, No version set (parsed as 1.0.0)].
    - Can only install one of: setasign/fpdi[v2.0.1, No version set (parsed as 1.0.0)].
    - Can only install one of: setasign/fpdi[v2.0.2, No version set (parsed as 1.0.0)].
    - Can only install one of: setasign/fpdi[v2.0.3, No version set (parsed as 1.0.0)].
    - Installation request for setasign/fpdi-fpdf ^2.0 -> satisfiable by setasign/fpdi-fpdf[v2.0.0].


Installation failed, reverting ./composer.json to its original content.

Я не очень знаком с композитором, поэтому я не могу знать, что делать с этой ошибкой.

Мой composer.json файл выглядит так:

{
    "name": "setasign/fpdi",
    "homepage": "https://www.setasign.com/fpdi",
    "description": "FPDI is a collection of PHP classes facilitating developers to read pages from existing PDF documents and use them as templates in FPDF. Because it is also possible to use FPDI with TCPDF, there are no fixed dependencies defined. Please see suggestions for packages which evaluates the dependencies automatically.",
    "type": "library",
    "keywords": [
        "pdf",
        "fpdi",
        "fpdf"
    ],
    "license": "MIT",
    "autoload": {
        "psr-4": {
            "setasign\\Fpdi\\": "src/"
        }
    },
    "require": {
        "php": "^5.6 || ^7.0",
        "ext-zlib": "*"},
    "authors": [
        {
            "name": "Jan Slabon",
            "email": "jan.slabon@setasign.com",
            "homepage": "https://www.setasign.com"
        },
        {
            "name": "Maximilian Kresse",
            "email": "maximilian.kresse@setasign.com",
            "homepage": "https://www.setasign.com"
        }
    ],
    "suggest": {
        "setasign/fpdf": "FPDI will extend this class but as it is also possible to use \"tecnickcom/tcpdf\" as an alternative there's no fixed dependency configured.",
        "setasign/fpdi-fpdf": "Use this package to automatically evaluate dependencies to FPDF.",
        "setasign/fpdi-tcpdf": "Use this package to automatically evaluate dependencies to TCPDF."
    },
    "require-dev": {
        "phpunit/phpunit": "~5.7",
        "setasign/fpdf": "~1.8",
        "tecnickcom/tcpdf": "~6.2"
    },
    "autoload-dev": {
        "psr-4": {
            "setasign\\Fpdi\\": "tests/"
        }
    }
}

Я также попросил помощи в вопросах библиотеки, и кто-то ответил мне:

Почему вы используете composer.json из FPDI?Наверняка вам нужно создать свой собственный: https://getcomposer.org/doc/01-basic-usage.md!

Вот почему я не совсем понимаю.(Он не ответил мне потом, поэтому я здесь).

Должен ли я перезаписать существующий файл composer.json?Или, может быть, я должен положить файл в другом месте?

Ответы [ 2 ]

0 голосов
/ 27 мая 2018

Проблема совсем не была сложной, я просто не знал, что мне нужно поместить зависимости в мой собственный файл composer.json в папку моего проекта, независимо от того, что находится в библиотеке.

Спасибо Робу за его полезную помощь.

0 голосов
/ 27 мая 2018

В вашем проекте должен быть один composer.json файл, и вы должны добавить в него новую зависимость.Но не в случайном месте, он должен быть внутри require секции.

Так что если ваш старый composer.json выглядит так:

{
    "require": {
        "some-old/dependency": "1.0.*"
    }
}

После добавления новогозависимость должна выглядеть следующим образом:

{
    "require": {
        "some-old/dependency": "1.0.*",
        "new/dependency": "^1.6"
    }
}

Где ^1.6 - это ограничение для версии зависимости, которую вы хотите установить.


Если вы неЧтобы знать, как редактировать composer.json, вы можете использовать команды композитора для этой задачи:

composer require new/dependency

Это автоматически добавит зависимость к вашему composer.json и установит его.Он также выберет ограничение для новейшей версии зависимости, так что это, вероятно, самый простой способ сделать то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...