Как избежать зависимостей проекта от обновления формы композитора (например, laravel из 5.1 LTS)?

Я беспокоюсь о Laravel и концепциях долгосрочной поддержки, связанных с моим приложением.

Теперь я разработал свое приложение на lrvl 5.2, но версия LTS — это 5.1. Поскольку я хотел бы иметь долгосрочную поддерживаемую платформу в качестве основы для своего приложения, мне интересно, стоит ли переходить на версию 5.1. Никаких проблем с функциями не должно возникнуть для моего конкретного приложения. Но это уже другая история... не в тему этого вопроса.

Во-вторых, я не понимаю, как сказать композитору придерживаться laravel 5.1, то есть, когда я запущу обновление композитора, не обновляйте версию laravel 5.1.

Должен ли я также беспокоиться о настройке композитора при обновлении пакетов зависимостей?


person koalaok    schedule 21.04.2016    source источник


Ответы (1)


В файле composer.json найдите и отредактируйте эту строку:

"laravel/framework": "5.1.*",

Вот как вы заставляете Composer придерживаться указанной версии. Надеюсь, поможет.

Для получения дополнительной информации: https://getcomposer.org/doc/articles/versions.md

composer.json для Laravel 5.1 LTS

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        "php": ">=5.5.9",
        "laravel/framework": "5.1.*"
    },
    "require-dev": {
        "fzaninotto/faker": "~1.4",
        "mockery/mockery": "0.9.*",
        "phpunit/phpunit": "~4.0",
        "phpspec/phpspec": "~2.1"
    },
    "autoload": {
        "classmap": [
            "database"
        ],
        "psr-4": {
            "App\\": "app/"
        }
    },
    "autoload-dev": {
        "classmap": [
            "tests/TestCase.php"
        ]
    },
    "scripts": {
        "post-root-package-install": [
            "php -r \"copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ],
        "post-install-cmd": [
            "Illuminate\\Foundation\\ComposerScripts::postInstall",
            "php artisan optimize"
        ],
        "post-update-cmd": [
            "Illuminate\\Foundation\\ComposerScripts::postUpdate",
            "php artisan optimize"
        ]
    },
    "config": {
        "preferred-install": "dist"
    }
}
person Toan Nguyen    schedule 21.04.2016
comment
так как теперь есть laravel/framework: 5.2.* и я думаю, что другие перечисленные зависимости пакетов/версий записаны в файле композитора как зависимости версии 5.2, а не 5.1, не сломается ли он? (Я полагаю, что после внесения изменений мне нужно будет выполнить команду обновления композитора?) Спасибо. - person koalaok; 21.04.2016
comment
Теоретически ответ Нет, Composer попытается автоматически найти для вас совместимую версию других зависимостей. Проверьте мой ответ, чтобы просмотреть полный файл composer.json для 5.1 LTS. - person Toan Nguyen; 21.04.2016
comment
Важно знать, что Laravel НЕ придерживается семантического управления версиями, поэтому различия между двумя младшими версиями могут привести к поломке. По этой причине вам следует либо иметь достаточное количество тестов, либо ограничить Composer обновлениями только в пределах диапазона патчей, например 5.1.* или 5.2.*. Избегайте операторов тильды или каретки: ~5.1 или ^5.1.4 будут пытаться обновиться до версии 5.2 и выше. - person Sven; 21.04.2016