จะหลีกเลี่ยงการอัปเกรดการพึ่งพาโปรเจ็กต์แบบฟอร์มผู้แต่ง (เช่น 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