1402/02/28 440 کلمه 2 دقیقه

ایجاد پکیج: ساختار و فایل composer.json

آموزش ساخت پکیج لاراول

برای شروع ساخت پکیج لاراولی ریپازیتوری‌های زیادی برای طرح خام و آماده وجود دارد که یکی از معروف ترین و در عین حال استانداردترین آن‌ها، spatie/package-skeleton-laravel است. این ریپازیتوری نیز توسط شرکت spatie توسعه یافته است و یک چارچوب بسیار تمیز برای شروع ساخت پکیج لاراول محسوب می‌شود.

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

پیشنهاد می‌شود برای شروع، یک پروژه لاراولی بسازیم (نه یک پکیج) و در داخل یک ساب فولدر پکیج خودمان را قرار دهیم.

  • با دستور composer create-project laravel/laravel myproject یا هردستور دیگری که دردسترس هست یک پروژه لاراولی بالا می‌آوریم.
  • داخل فولدر پروژه ساخته شده مسیر packages/themahdavi/laravel-permission-editor/ را می‌سازیم.

این دقیقا اسم پکیج ما خواهد بود. در حقیقت اسم پکیج از دو بخش تشکیل شده است. vendor/package-name . بخش اول یا vendor سازنده پکیج است که در این آموزش themahdavi است (نام کاربری واقعی گیت‌هاب) و بخش دوم laravel-permission-editor می‌باشد.

create-package-structure-composer-json

در مرحله بعد نیاز است تا در مسیر اصلی پکیج یک فایل composer.json درست کنیم. برای این منظور دستور composer init وجود دارد که پس از پرسیدن چند سوال در نهایت فایل مورد نیاز ما را خواهد ساخت.

cd packages/themahdavi/laravel-permission-editor

composer init

به طور کلی هنگام ساخت این فایل نیاز نیست نگران باشید که چه چیزی داخل آن ساخته می‌شود چون در ادامه ساخت پکیج به آن مراجعه خواهیم کرد. این فایل هنگام انتشار پکیج بسیار مهم و حیاتی خواهد بود. به هرحال برای شروع مقادیر زیر داخل آن قرار می‌گیرد:

packages/themahdavi/laravel-permission-editor/composer.json:

{

	"name": "themahdavi/laravel-permission-editor",
	
	"description": "Visual UI for managing Roles/Permissions for Spatie Laravel Permission package",
	
	"license": "MIT",

    "authors": [

		{
		
		"name": "Ali Mahdavi",
		
		"email": "mahdavi095@gmail.com"
		
		}

	],

	"minimum-stability": "dev",
	
	"require": {}

}

سپس برای اینکه پکیج در دسترس باشد آن را باید در فایل اصلی composer.json پروژه لاراول لود کنیم. پکیج را در داخل وابستگی‌های dev-main قرار می‌دهیم.

composer.json (دقت کنید فایل composer اصلی پروژه لاراول است)

// ...

"require": {

	"php": "^8.2",
	
	"guzzlehttp/guzzle": "^7.2",
	
	"laravel/framework": "^10.10",
	
	"laravel/sanctum": "^3.0",
	
	"laravel/tinker": "^2.7",
	
	"themahdavi/laravel-permission-editor": "dev-main"

},

"repositories": [

	{
	
		"type": "path",
		
		"url": "packages/themahdavi/laravel-permission-editor",
		
		"options": {
		
			"symlink": true
	
		}

	}

],

و برای اتمام این درس کافی است دستور composer update را در مسیر پروژه لاراول اجرا کنیم.

با دیدن مقادیر زیر در ترمینال، مطمئن می‌شویم که مراحل را به درستی انجام دادیم:

  • Installing themahdavi/laravel-permission-editor (dev-main): Symlinking from packages/themahdavi/laravel-permission-editor

عالی است، حالا پروژه لاراول ما پکیج ساخته شده را خواهد دید.