web-dev-qa-db-fra.com

Comment spécifier Composer chemin d'installation?

J'ai cette définition:

{
    "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.*"
    }
}

J'utilise Symfony 1 et j'aimerais les installer sur plugins/sfGuardPlugin/. Comment puis-je spécifier cela?

85
Tower

Il semble que vous puissiez définir le répertoire vendor comme autre chose (plugins dans votre cas):

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

Ensuite, vous pouvez renommer le nom du paquet pour qu'il ne contienne pas de répertoire de niveau, comme ceci:

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

Donc, votre composer.json devrait ressembler à ceci:

{
    "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.*"
    }
}

Modifier

En utilisant cette configuration, vous obtiendrez le chemin (ce qui est bien sûr pas bon pour symfony):

plugins/sfGuardPlugin/sfGuardPlugin-4.0.2 /

J'ai trouvé une solution de contournement avec ce 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.*"
    }
}
128
j0k

Vous pouvez également utiliser composer/installateurs , un installateur multi-framework composer avec le type de paquet "symfony1-plugin". Voici à quoi ressemble mon fichier composer.json like, afin d’installer Symfony 1.4 (dans lib/vendor) et les plugins ((plugins)):

{
    "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"
    }
}
27
Adam V.

Voir COMPOSER_VENDOR_DIR variable d'environnement.

En définissant cette variable, vous pouvez faire Composer) installer les dépendances dans un répertoire autre que le fournisseur.

Cela peut être utile dans le cas où vous souhaitez remplacer ceci dans un environnement particulier tel que vagabond où vous ne voudriez pas que cela se trouve dans un dossier partagé.

Et comme J0k l'a dit, il y a vendor-dir dans config section de composer.json

Par défaut au vendeur. Vous pouvez installer des dépendances dans un autre répertoire si vous le souhaitez. $ HOME et ~ seront remplacés par le chemin de votre répertoire personnel dans vendor-dir et toutes les options * -dir ci-dessous.

8
GabLeRoux