composer.json sizin yazdığınız paketin bir dosyasıdır, gereklilik, bağımlılık, autoload dizinini belirler, yani hazırlanan paketin belli standartta olmasını sağlar. packagist.org sitesine sadece "Repository URL" gönderiliyor, örneğin
https://github.com/juy/profiler.git benim "Repository URL" adresim. Yani benim projeme göre git clone yapılabilecek herhangi bir URL yi kabul edecektir. Git olma zorunluluğu da yok, Git/Svn/Hg olabilir diyor.
"Repository URL" yi packagist.org sitesine eklediğimde site composer.json daki bilgileri okur ve paket özellikleri bunlar diye gösterir yükleme yapacak kişilere.
Paket oluşturmak için sizin yapacağınız; bilgisayarınızda composer standartlarında bir paket oluşturup bunu public bir sürümlendirme sistemine yüklemek ve bu yüklediğiniz sürümlendirme sisteminin adresini packagist.org sitesine eklemek.
Bir de laravel paketlerinde normal bir composer paketine göre farklı kısımlar olabilir. Bir laravel paketinde laravel bağımlılıkları da kullanılabilir. Çok basit bir paket örneği vereyim, hiçbir bağımlılığı yok, sadece bir class tan ibaret ve laravel dahil composer kullanan tüm sistemlerde çalışır;
https://github.com/juy/tccheck
Şu adreste bir laravel paketi nasıl yapılır anlatıyor.
http://jasonlewis.me/article/laravel-4-develop-packages-using-the-workbench
Son olarak da bir paket oluşturmak için bilmeniz gerekenler:
- PHP OOP, Namespace
- Paket laravel için yapılacaksa, "Laravel paket geliştirme" (
http://laravel.com/docs/packages -
http://dokuman.laravel.gen.tr/docs/packages)
- PHP psr standartları (laravel psr-0 ve psr-1 kullanır, psr-2 kullanmaz ancak istersek kullanabiliriz, detaylar:
http://www.php-fig.org)
- Sürümlendirme sistemi ve en az orta seviye kullanımı (git ve yüklemeler için github.com tavsiye ederim, çalışma ortamına, bilgisayarına git kurma dahil)
- Composer dosyası hazırlama ve içeriği (çalışma ortamına, bilgisayarına composer kurma dahil)