Cara Membuat Laravel Packages
Langkah Mudah Membangun dan Mengelola Library Laravel Anda Sendiri
Berapa kali kamu membuat kodingan yang sama di setiap projectnya? Kalau kamu sering membuat microservice, kamu akan sering membuat kodingan helper atau utilities di setiap servicenya. Bagaimana kalau membuat library sendiri? Terkadang, ide ini bisa terasa menantang, terutama jika kamu baru mengenal dunia development.
Di dunia development, banyak developer yang telah membuat library sendiri, seperti Laravel sendiri yang diciptakan oleh sekelompok developer. Kamu bisa melihat berbagai library PHP di website Packagist. Di sini aku akan membimbingmu untuk membuat library Laravel sendiri.
Persiapan
Ketika membuat sebuah library, kamu memerlukan sebuah tools bernama composer. Tools yang sama dengan tools yang dibutuhkan untuk membuat project Laravel.
Untuk memulai, kamu bisa membuat folder terlebih dahulu. Nama folder ditentukan dari library apa yang akan kamu buat. Anggap kita membuat menjalankan command ini di terminal.
composer init
Di sana, composer akan memberikan panduan untuk membuat librarymu. Setiap nama library pasti memiliki format <vendor>/<package-name>
. Vendor name biasanya merupakan Github username-mu, sedangkan package name adalah nama library-mu, biasanya package name sama dengan nama folder. Contoh: dipantry/rajaongkir
Selanjutnya, composer akan memintamu untuk menginput beberapa key untuk manajemen librarymu:
- Description: deskripsi singkat tentang paket kamu. Ini seperti memberi tahu orang lain apa yang paketmu lakukan dalam satu atau dua kalimat.
- Author: informasi tentang pembuat paket. Ini biasanya terdiri atas nama, email, dan terkadang URL website sebagai bentuk kredit. Kamu bisa memasukkan lebih dari satu author.
- Minimum-stability: tingkat stabilitas minimum dari paket yang kamu izinkan untuk diinstall. Misalnya, jika kamu set
minimum-stability
kedev
, user bisa menginstall library dalam versi development. Value lainnya yaitualpha
,beta
,RC
(Release Candidate), danstable
. - Type: jenis paketmu. Inputan ini biasanya merupakan
library
untuk pustaka PHP standar, tapi bisa jugaproject
untuk aplikasi/framework, atau jenis lain sepertiwordpress-plugin
ataularavel-package
. Ini membantu Composer menangani librarymu dengan tepat. - License: menyatakan lisensi di bawah mana paketmu didistribusikan. Key ini penting untuk memberitahu user bagaimana mereka diizinkan untuk menggunakan packagemu. Contoh lisensi termasuk
MIT
,GPL-2.0-or-later
,BSD-3-Clause
, dll. - Require: daftar dependensi yang diperlukan oleh packagemu. Ini mencakup nama paket dan versi yang diperlukan. Jika packagemu akan menggunakan fungsi-fungsi pada Laravel, sebaiknya kamu menambah package
illuminate/support
. - Require-dev: mirip dengan
require
, tetapi key ini berisi dependensi yang hanya diperlukan untuk pengembangan. Ini bisa termasuk alat untuk testing, debugging, atau alat build. Daftar dependensi ini tidak akan diinstall saat packagemu digunakan oleh user lain. - Psr-4: bagian dari autoload, yang mendefinisikan bagaimana namespace dalam paketmu dipetakan ke struktur direktori sumber kode. Ini memungkinkan Composer untuk secara otomatis memuat kelas tanpa perlu require file secara manual. Misalnya,
"Dipantry\\": "src/"
berarti bahwa namespaceDipantry
akan dipetakan ke direktorisrc/
.
Setelah composer membuat packagemu, kamu akan melihat struktur folder dan file seperti gambar di bawah.
Pengembangan
Folder src
di sini seperti folder app
pada struktur folder Laravel, dimana setiap proses yang nantinya bisa dipakai oleh user, selalu berasal dari folder src
ini. Kamu diperbolehkan membuat folder lain di luar folder src
seperti config, database, resources, tests, dll. Namun, isi folder ini wajib memiliki format yang sama dengan format milik Laravel.
Contohnya, mari kita buat sebuah sebuah file bernama Random.php
Testing
Sebelum melakukan publikasi, sebaiknya kamu melakukan testing terlebih dahulu akan package yang kamu buat. Kamu bisa menggunakan phpunit untuk melakukan unit testing terhadap setiap method atau function. Cara menggunakannya dapat dimulai dengan menambahkan dependensi phpunit/phpunit
pada require-dev. Lalu, kamu perlu membuat folder baru bernama tests
untuk menaruh setiap test yang ada.
Contohnya, kamu bisa membuat file RandomTest.php
dengan kode seperti di bawah.
Untuk menjalankan testing, kamu bisa menjalankan phpunit tersebut dengan konfigurasi phpunit tertentu. Pada root folder, kamu bisa menambahkan phpunit.xml
.
Setelah menambahkan file phpunit.xml
dan beberapa file testing, kamu bisa melakukan testing dengan cara memanggil command di bawah.
vendor/bin/phpunit
Setelah itu, phpunit akan memberikan informasi penggunaan memory, waktu testing, hingga test mana saja yang gagal. Jika kamu sudah merasa siap dan kodingan kamu sudah terbebas dari error, maka packagemu siap dipublikasikan.
Publikasi
Untuk mempublikasikan packagemu, prosesnya cukup mudah. Pertama, kamu perlu menyimpan packagemu ke dalam Git Repository, seperti Github. Sebaiknya, kamu mengkonfigurasi repositorymu menjadi public karena private repository memerlukan konfigurasi khusus untuk memasukkan package ke dalam Packagist.
Selanjutnya, kamu hanya perlu mengakses website packagist dan login ke akunmu. Selanjutnya pada header website terdapat tab bernama Submit
dan masukkan link repository pada form yang muncul pada website tersebut.
Ketika selesai, kamu sudah bisa menggunakan packagemu di project lain dengan cara memanggil nama packagemu menggunakan command di bawah seperti memasukkan package lain ke dalam projectmu.
composer require dipantry/rajaongkir
Membuat paket Laravel mungkin terlihat seperti perjalanan yang panjang, namun setiap langkahnya memberikan pelajaran yang berharga. Ingat, di balik setiap baris kode, ada kesempatan untuk belajar dan berkontribusi pada komunitas yang lebih besar. Mari kita mulai petualangan ini bersama dan buatlah paket Laravel yang akan memudahkan pekerjaan banyak pengembang di luar sana. Semangat, dan selamat berkarya!