web-dev-qa-db-fra.com

Compositeur: packages requis avec différents niveaux de stabilité minimale

J'ai un fichier composer pour une installation laravel avec le fichier composer.json suivant:

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "require": {
        "laravel/framework": "4.1.*"
    },
    "autoload": {
        "classmap": [
            "app/commands",
            "app/controllers",
            "app/models",
            "app/database/migrations",
            "app/database/seeds",
            "app/tests/TestCase.php"
        ]
    },
    "scripts": {
        "post-install-cmd": [
            "php artisan clear-compiled",
            "php artisan optimize"
        ],
        "post-update-cmd": [
            "php artisan clear-compiled",
            "php artisan optimize"
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ]
    },
    "config": {
        "preferred-install": "dist"
    },
    "minimum-stability": "stable"
}

J'essaie d'ajouter le paquet pour la sentinelle. Sur le site Web de sentry, il est indiqué que je peux l'installer en ajoutant ce qui suit à mon fichier composer.json:

{
    "require": {
        "cartalyst/sentry": "2.0.*"
    },
    "minimum-stability": "dev"
}

J'ai essayé d'ajouter le nouvel objet json à la fin de l'actuel laravel one like so:

...
},
{
    "require": {
        "cartalyst/sentry": "2.0.*"
    },
    "minimum-stability": "dev"
}

Lorsque j'exécute le composer update commande pour charger le nouveau package J'obtiens une erreur disant que le nouvel ajout d'objet n'est pas valide json.

Si j'ajoute le cartalyst/sentry à l'objet require existant, il ne peut pas trouver le package sentinelle car les exigences existantes ont une valeur de stabilité minimale de stable.

Existe-t-il un moyen de spécifier le package sentinelle dans un objet require séparé qui a le paramètre de stabilité minimale de dev?

57
Chris Schmitz

La réponse est simplement d'ajouter @dev

{
    "require": {
        "cartalyst/sentry": "2.0.*@dev"
    },
}

Vous pouvez lire plus d'informations sur les paramètres de stabilité minimum ici .

Une alternative consiste à définir votre stabilité minimale sur dev, mais dites à composer que vous souhaitez utiliser stable autant que possible:

"minimum-stability": "dev",
"prefer-stable" : true

Cela signifie essentiellement qu'il utilisera toujours stable SAUF qu'il n'y a aucun moyen d'installer une dépendance stable, et donc d'utiliser dev.

117
Laurence

Vous pouvez également utiliser d'autres niveaux de stabilité , comme alpha, beta combinés avec le sélecteur de version .

Exemples

Avec opérateur caret - maximum de la version 2 permettant la bêta:

"cartalyst/sentry": "^2@beta"

Toute version autorisant l'alpha

"cartalyst/sentry": "*@alpha"
2
PeterM