【问题标题】:How to avoid composer form upgrading project dependencies (ex. laravel from 5.1 LTS)?如何避免作曲家表单升级项目依赖项(例如来自 5.1 LTS 的 laravel)?
【发布时间】:2016-08-14 08:23:46
【问题描述】:

我担心与我的应用程序相关的 Laravel 和长期支持概念。

现在我在 lrvl 5.2 上开发了我的应用程序,但 LTS 版本是 5.1。 由于我希望有一个长期支持的框架作为我的应用程序基础,我想知道是否可以降级到 5.1。我的特定应用程序不会出现任何功能问题。但这是另一个故事......不是这个问题的主题。

其次,我不知道如何告诉作曲家坚持使用 laravel 5.1, 即当我运行作曲家更新时,请避免更新 laravel 5.1 版本。

我是否还应该担心通过更新依赖包来调整作曲家?

【问题讨论】:

    标签: laravel composer-php upgrade lts


    【解决方案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"
        }
    }
    

    【讨论】:

    • 因为现在有 "laravel/framework": "5.2.*" 并且我认为其他列出的包/版本依赖项都写在作曲家文件中作为 5.2 版本的依赖项而不是 5.1,不是它会坏吗? (我相信在进行更改后我需要执行 composer update 命令?)谢谢
    • 理论上,答案是,Composer会自动为你寻找其他依赖的兼容版本。检查我的答案以查看完整的 composer.json 5.1 LTS。
    • 重要的是要知道 Laravel 不遵循语义版本控制,因此两个小版本之间的差异可能会破坏一些东西。这就是你应该有足够的测试,或者限制 Composer 只在补丁范围内更新的原因,比如5.1.*5.2.*。避免使用波浪号或插入符号运算符:~5.1^5.1.4 都会尝试更新到 5.2 及更高版本。
    猜你喜欢
    • 2021-10-22
    • 2018-03-06
    • 2018-09-23
    • 2013-04-20
    • 1970-01-01
    • 2014-04-20
    • 2014-03-10
    • 2016-09-12
    • 2012-03-17
    相关资源
    最近更新 更多