توسعه پکیج های لاراول با Dependency های Composer داخلی (Local)
ﺯﻣﺎﻥ ﻣﻄﺎﻟﻌﻪ: 2 دقیقه

توسعه پکیج های لاراول با Dependency های Composer داخلی (Local)

توسعه پکیج های Composer به صورت داخلی از طریق یک Symlink فایل محلی، وقتی که می خواهید پکیج های محلی درست کنید و آن ها را بر روی یک برنامه آزمایش کنید، سرعت توسعه را به طور فوق العاده ای افزایش می دهد.

اخیرا بر روی پیشرفت کار خودم برای پیش بردن یک پکیج لاراول از توسعه به انتشار کار می کردم، که دیدم معمولا Dependency هایم را از طریق GitHub repo نصب می کنم، و هنگام به روز رسانی اجزا به طور متداوم composer update را اجرا می کنم، زیرا تنبلی ام می آید.

فکر کردم که بهتر است جریان کاری خودم برای توسعه پکیج های لاراول و استفاده از آنها، آن هم کاملا به طور داخلی را سندنگاری کنم.

راه اندازی پکیج

می خواهم شما را در طی ساخت یک پکیج Composer و اضافه کردن یک Service Provider از صفر راهنمایی کنم. تعدادی از توسعه دهندگان پکیج را می شناسم که از یک Boilerplate Repository به عنوان یک نقطه شروع برای PHP و پکیج های لاراول استفاده میکنند.در ابتدا، بیایید یک پروژه کامپوزر به عنوان مثال بسازیم و یک Service Provider لاراول راه اندازی کنیم. می خواهم کد خود را از /code شروع کنم:

cd ~/code
mkdir example-pkg
cd example-pkg/
mkdir src/
composer init
# Walk through the prompts to init...

پس از این که فایل composer.json را ساختید، بیایید مواردی را برای بارگذاری خودکار و Service Provider های خودکار اضافه کنیم:

{
    "name": "paul/example-package",
    "authors": [
        {
            "name": "Paul Redmond",
            "email": "paul@example.com"
        }
    ],
    "autoload": {
        "psr-4": {
            "ExamplePackage\\": "src/"
        }
    },
    "require": {},
    "extra": {
        "laravel": {
            "providers": [
                "ExamplePackage\\ExamplePackageServiceProvider"
            ]
        }
    }
}

در آخر، بیایید یک Skeleton Service Provider بسازیم:

<?php

namespace ExamplePackage;

use Illuminate\Support\ServiceProvider;

class ExamplePackageServiceProvider extends ServiceProvider
{
    public function boot()
    {
        # code...
    }

    public function register()
    {
        # code...
    }
}

لینک کردن پکیج خود به یک پروژه لاراول

حال که یک پروژه کامپوزر محلی داریم که می توانیم از آن برای شروع به توسعه یک پکیج لاراول استفاده کنیم، بیایید یک برنامه لاراول دمو بسازیم تا پکیج آزمایشی خود را با استفاده از یک فایل محلی به آن متصل کنیم:

cd ~/code
laravel new laravel-demo
cd laravel-demo

با استفاده از این کد نیز می توانید Repository محلی خود را لینک کنید:

composer config repositories.local '{"type": "path", "url": "../example-pkg"}' --file composer.json

سپس، باید composer require را اجرا کنیم تا Repository محلی را به عنوان یک Dependency اضافه کنیم. به یاد داشته باشید که از کلید “name” که در فایل کامپوزر example-package تعریف کردید استفاده کنید:

composer require paul/example-package

Using version dev-master for paul/example-package
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover
Discovered Package: fideloper/proxy
Discovered Package: laravel/tinker
Discovered Package: nunomaduro/collision
Discovered Package: paul/example-package
Package manifest generated successfully.

می توانید ببینید که پکیج ما از طریق کلید “extra” در فایل composer.json کشف شد.

اگر filesystem را بررسی کنید، می توانید ببینید که پکیج symlink شده است، که یعنی شما می توانید پکیج را به طور محلی توسعه دهید و سریعا آن را بر روی یک پروژه دمو آزمایش کنید:

cd ~/code/laravel-demo
ls -la vendor/paul
total 0
.
..
example-package -> ../../../example-pkg

حال یک راه عالی برای توسعه پکیج های لاراول در کنار یک برنامه لاراول داریم.

منبع

چه امتیازی برای این مقاله میدهید؟

خیلی بد
بد
متوسط
خوب
عالی
در انتظار ثبت رای

5 سال پیش
/@er79ka

دیدگاه و پرسش

برای ارسال دیدگاه لازم است وارد شده یا ثبت‌نام کنید ورود یا ثبت‌نام

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

در حال دریافت نظرات از سرور، لطفا منتظر بمانید