Frage Wie kann ich den Composer-Installationspfad angeben?


Ich habe diese Definition:

{
    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "symfony/sfGuardPlugin",
                "version": "4.0.2",
                "dist": {
                    "url": "http://plugins.symfony-project.org/get/sfGuardPlugin/sfGuardPlugin-4.0.2.tgz",
                    "type": "tar"
                }
            }
        }
    ],
    "require": {
        "symfony/sfGuardPlugin": "4.0.*"
    }
}

Ich benutze Symfony 1 und möchte sie installieren plugins/sfGuardPlugin/. Wie lege ich das fest?


76
2017-08-09 12:23


Ursprung


Antworten:


Es scheint, dass Sie das definieren können vendor dir zu sein etwas anderes (plugins in Ihrem Fall):

{
    "config": {
        "vendor-dir": "plugins"
    }
}

Dann könnten Sie den Paketnamen umbenennen, um kein Ebenenverzeichnis zu haben, wie zum Beispiel:

        "package": {
            "name": "sfGuardPlugin",

Also dein composer.json sollte so aussehen:

{
    "config": {
        "vendor-dir": "plugins"
    },
    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "sfGuardPlugin",
                "version": "4.0.2",
                "dist": {
                    "url": "http://plugins.symfony-project.org/get/sfGuardPlugin/sfGuardPlugin-4.0.2.tgz",
                    "type": "tar"
                }
            }
        }
    ],
    "require": {
        "sfGuardPlugin": "4.0.*"
    }
}

Bearbeiten

Mit dieser Konfiguration erhalten Sie den Pfad (was ist Na sicher nicht gut für symfony):

plugins / sfGuardPlugin / sfGuardPlugin-4.0.2 /

Ich habe einen Workaround gefunden composer.json:

{
    "config": {
        "vendor-dir": "plugins"
    },
    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "sfGuardPlugin",
                "version": "4.0.2",
                "source": {
                    "url": "http://svn.symfony-project.com/plugins/sfGuardPlugin/",
                    "type": "svn",
                    "reference": "branches/1.3/"
                }
            }
        }
    ],
    "require": {
        "sfGuardPlugin": "4.0.*"
    }
}

115
2017-08-09 12:39



Sie können auch verwenden Komponisten / Installateure, ein Multi-Framework-Composer-Library-Installationsprogramm mit dem Pakettyp "symfony1-plugin". So sieht meine composer.json-Datei aus, damit sowohl Symfony 1.4 (in lib / vendor) als auch plugins in (/ plugins) installiert werden können:

{
    "config": {
        "vendor-dir": "lib/vendor"
    },
    "repositories": {
        "symfony": {
            "type": "package",
            "package": {
                "name": "symfony/symfony1",
                "version": "1.4",
                "dist": {
                    "url": "https://github.com/symfony/symfony1/zipball/1.4",
                    "type": "zip"
                }
            }
        },
        "sfResquePlugin" : {
            "type": "package",
            "package": {
                "name": "devpips/sfResquePlugin",
                "type": "symfony1-plugin",
                "version": "0.1",
                "dist": {
                    "url": "https://github.com/devpips/sfResquePlugin/zipball/master",
                    "type": "zip"
                }
            }
        }
    },
    "require": {
        "composer/installers": "dev-master",
        "symfony/symfony1": "1.4",
        "devpips/sfResquePlugin":"0.1"
    }
}

25
2017-08-19 00:16



Sehen COMPOSER_VENDOR_DIR Umgebungsvariable.

Wenn Sie diese Variable setzen, können Sie Composer dazu veranlassen, die Abhängigkeiten in ein anderes Verzeichnis als den Anbieter zu installieren.

Dies kann hilfreich sein, wenn Sie dies in einer bestimmten Umgebung, z. B. in vagrant, überschreiben möchten, bei der dies nicht in einem freigegebenen Ordner sein soll.

Und wie J0k sagte, da ist vendor-dir im config Abschnitt von composer.json

Der Standardwert ist der Anbieter. Sie können Abhängigkeiten in einem anderen Verzeichnis installieren, wenn Sie möchten. $ HOME und ~ werden durch den Pfad Ihres Home-Verzeichnisses in Vendor-Verzeichnis und alle * -dir Optionen darunter ersetzt.


5
2018-04-18 18:48