Mohamed Sabil 83

مدونة تقنية لكل المهتمين بتطوير المواقع الإلكترونية وأنظمة الويب

Laravel - Vue - Tailwind

ترقية لارافيل إلى النسخة الأحدث

 

 

العديد منا يرغب في ترقية نسخة لارافيل التي يستخدمها لأحدث إصدارة حتى يواكب التحديثات والمزايا الإضافية، لكن السؤال الذي يطرح نفسه كيف أقوم بترقية نسختي من لارافيل. هناك بعض مواقع الخدمات المدفوعة المخصصة لعمل ذلك من أشهرها موقع laravel-shift ولكن ما نحن بصدده الآن هو معرفة كيف تقوم بترقية نسختك من لارافيل بنفسك.

سنذكر في موضوعنا هذا الطريقة المباشرة لترقية نسختك من لارافيل، وسنتناول في مواضيع لاحقة بعض المهارات الإضافية التي تسهل عليك عملية الترقية ومتابعة التغيرات. والآن دعونا نبدأ بالمثال التالي والذي سنقوم فيه بترقية نسخة لارافيل 5.7 إلى 5.8.

 

أولاً: تحديث لارافيل والمكتبات المثبتة

للقيام بذلك علينا فتح المجلد الرئيسي للمشروع في سطر الأوامر ومن ثم تنفيذ الأمر التالي:

composer update

لا تنسى أن تتأكد أن جميع المكتبات لديك تدعم نسخة لارافيل التي ستقوم بالترقية إليها، على كل حال إذا لم تكن بالصبر الكافي لتراجع المكتبات التي تستخدمها أولاً فيمكنك الترقية وستقف العملية إذا ما كانت هناك مكتبة غير متوافقة مع إصدارة لارافيل التي ستقوم بالترقية إليها 😎

 

 ثانياً: تحديث إصدارات المكتبات في الأجزاء الرئيسية

النسخة التي نستهدف الترقية إليها هي 5.8 سنقوم بتحديث جزء require و require-dev في ملف composer.json وهو في مثالنا بالشكل التالي:

"require": {
        "php": "^7.1.3",
        "cviebrock/eloquent-sluggable": "4.6",
        "fideloper/proxy": "^4.0",
        "laravel/framework": "5.7.*",
        "laravel/tinker": "^1.0",
        "laravelcollective/html": "5.7"
    },
    "require-dev": {
        "beyondcode/laravel-dump-server": "^1.0",
        "filp/whoops": "^2.0",
        "fzaninotto/faker": "^1.4",
        "mockery/mockery": "^1.0",
        "nunomaduro/collision": "^2.0",
        "phpunit/phpunit": "^7.0"
    },

ليكون بالشكل التالي: 

"require": {
        "php": "^7.1.3",
        "cviebrock/eloquent-sluggable": "*",
        "fideloper/proxy": "*",
        "laravel/framework": "5.8.*",
        "laravel/tinker": "*",
        "laravelcollective/html": "*"
    },
    "require-dev": {
        "beyondcode/laravel-dump-server": "*",
        "filp/whoops": "*",
        "fzaninotto/faker": "*",
        "mockery/mockery": "*",
        "nunomaduro/collision": "*",
        "phpunit/phpunit": "*"
    },

لاحظ أننا حدثنا إصدارة لارافيل من 5.7^ لتكون 5.8^ وجعلنا قيمة الإصدارة تساوي (*) لجميع المكتبات الأخرى ليقوم بتثبيت أحدث نسخة متوافقة مع إصدارة لارافيل التي سنقوم بالترقية لها.

 

ثالثاً: بدء ترقية لارافيل والمكتبات المثبتة

الآن نقوم بتنفيذ أمر تحديث المكتبات مرة أخرى ليتم بدء ترقية نسخة لارافيل إلى النسخة الأحدث مع تحديث المكتبات إلى أحدث نسخة تدعم إصدارة لارافيل الجديدة.

composer update

 ستبدأ عملية التحديث وإذا كانت جميع خطواتك سليمة وكافة المكتبات تدعم النسخة الجديدة من لارافيل فستظهر لك جميع التحديثات التي تمت مشابهه للتالي:

mohamedsabil83@mohamedsabil83:~/www/upgrade-laravel$ composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 2 installs, 9 updates, 15 removals
  - Removing zendframework/zend-diactoros (2.1.3)
  - Removing ralouphie/getallheaders (3.0.3)
  - Removing psr/http-message (1.0.1)
  - Removing psr/http-factory (1.0.1)
  - Removing php-http/promise (v1.0.0)
  - Removing php-http/httplug (v1.1.0)
  - Removing php-http/guzzle6-adapter (v1.1.1)
  - Removing nexmo/client (1.8.1)
  - Removing lcobucci/jwt (3.3.1)
  - Removing laravel/slack-notification-channel (v1.0.3)
  - Removing laravel/nexmo-notification-channel (v1.0.1)
  - Removing kylekatarnls/update-helper (1.2.0)
  - Removing guzzlehttp/psr7 (1.6.1)
  - Removing guzzlehttp/promises (v1.3.1)
  - Removing guzzlehttp/guzzle (6.3.3)
  - Installing phpoption/phpoption (1.5.0): Loading from cache
  - Updating vlucas/phpdotenv (v2.6.1 => v3.5.0): Loading from cache
  - Updating nesbot/carbon (1.39.0 => 2.24.0): Loading from cache
  - Updating laravel/framework (v5.7.28 => v5.8.35): Loading from cache
  - Updating cviebrock/eloquent-sluggable (4.6.0 => 4.8.0): Loading from cache
  - Updating laravelcollective/html (v5.7 => v5.8.1): Loading from cache
  - Updating nunomaduro/collision (v2.1.1 => v3.0.1): Loading from cache
  - Installing sebastian/type (1.1.3): Loading from cache
  - Updating sebastian/global-state (2.0.0 => 3.0.0): Loading from cache
  - Updating phpunit/php-code-coverage (6.1.4 => 7.0.7): Loading from cache
  - Updating phpunit/phpunit (7.5.15 => 8.3.4): Loading from cache
Writing lock file
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover
Discovered Package: beyondcode/laravel-dump-server
Discovered Package: cviebrock/eloquent-sluggable
Discovered Package: fideloper/proxy
Discovered Package: laravel/tinker
Discovered Package: laravelcollective/html
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Package manifest generated successfully.
mohamedsabil83@mohamedsabil83:~/www/upgrade-laravel$ 

 

رابعاً: الخطوة الأخيرة (اختيارية لكن أنصح بعملها)

سنقوم بتحديث ملف composer.json وذلك باستبدال كل الـ (*) التي قمنا بوضعها في الخطوة الثانية بإصداراتها الجديدة التي ظهرت أثناء عملية التحديث، وفي مثالنا سيكون ملف composer.json النهائي على الشكل التالي: 

"require": {
        "php": "^7.1.3",
        "cviebrock/eloquent-sluggable": "^4.8",
        "fideloper/proxy": "^4.0",
        "laravel/framework": "5.8.*",
        "laravel/tinker": "^1.0",
        "laravelcollective/html": "^5.8"
    },
    "require-dev": {
        "beyondcode/laravel-dump-server": "^1.0",
        "filp/whoops": "^2.0",
        "fzaninotto/faker": "^1.4",
        "mockery/mockery": "^1.0",
        "nunomaduro/collision": "^3.0",
        "phpunit/phpunit": "^8.0"
    },

  لا تنسى مراجعة التغييرات الهامة سواء تلك الخاصة بـ لارافيل وهي موضحة في دليل الترقية الخاص بهم، أيضا المكتبات المثبتة عبر مستودعاتها في موقع GitHub.