Package Laravel – Haloo semunya, Assalaamualaikum wr wb..
Pada kali ini, kita akan coba membuat package laravel sendiri, mulai dari cara pembuatan nya, push ke packagist, dan setting auto update ke githook agar setiap ada pembaruan pada github nya, packagist nya juga akan otomatis terupdate..
Tapi sebelumnya, kita akan coba pahami dulu definisi tentang package..
Oh iya, sebelum nya kita juga sudah pernah membahas tentang bagaimana cara membuat Helper sendiri di Laravel, bisa kalian baca disini yah..
Apa itu package?
Definisi sederhana nya, Package itu adalah sebuah kumpulan fungsi dan class-class yang bisa kita gunakan berulang-ulang kali pada saat development suatu aplikasi..
Dengan satu package, dengan struktur koding yang sama, kita dapat memasang nya kedalam banyak project..
Sehingga kita tidak perlu menulis ulang kode nya berkali-kali..
Nanti jika kamu sudah berhasil membuat package nya, kamu bisa menentukan sendiri apakah package tersebut kamu simpan untuk dirimu sendiri atau mau kamu publish ke packagist menjadi open source agar orang lain juga bisa menggunakan nya..
Nah ini nantinya juga bisa menjadi bahan portoflio kamu..
Jika kamu sudah memiliki package yang berhasil kamu kembangkan sendiri, apalagi ternyata package buatan mu banyak yang pakai..
Biasanya perusahaan pencari kerja akan lebih tertarik dan menganggap mu sudah expert sebagai posisi laravel developer..
Mengapa harus membuat package?
Sudah dibahas sebelum nya, kalo dalam 1 package, bisa kita pasang ke banyak project yang sedang kita develop..
Tujuan nya agar menghemat waktu dan tidak perlu menulis ulang kembali kode nya..
Bayangkan saja, ketika kita sudah menemukan suatu rumus untuk memecahkan suatu masalah yang kemudian kita bungkus kedalam suatu project, dan ternyata kita menemukan masalah yang sama didalam project lainnya, maka kita tinggal pasang dan panggil saja package tersebut..
Lebih menghemat waktu karena kita tidak perlu menulis kembali kode nya.
Kemudian jika terdapat perbaikan script, jika menggunakan package, kamu hanya perlu melakukan perbaikan didalam package nya, maka nanti semua project mu yang menggunakan package tersebut juga akan terupdate..
Kita mulai masuk kedalam pembuatan nya
Sekarang kita akan mulai masuk untuk tahap-tahap pembuatan nya..
Persiapan
Ada beberapa hal yang perlu dipersiapkan..
Sebagai catatan, disini saya akan menggunakan Laravel versi 8, PHP versi 7.4, dan Composer versi 2..
Selain itu komputer mu juga harus sudah terinstall Git yah, fungsinya untuk push ke github..
Instalasi Laravel..
Silahkan kamu install dulu Laravel nya, disini saya menggunakan versi 8..
Untuk cara instalasi nya, bisa kamu kunjungi halaman resmi laravel nya disini..
Membuat Folder Packages
Setelah instalasi Laravel nya berhasil, maka langkah selanjutnya adalah kamu buat folder baru dengan nama packages didalam folder root kamu..
Jadi sejajar dengan folder app, routes, resources dan sebagai nya..
Misallkan pada kasus ini, kita akan membuat package untuk proses perhitungan kalkulator, tapi sederhana aja, cuma ada pertambahan dan pengurangan..
Baca Juga : Cara Membuat Helper Sendiri Di Laravel
Maka kamu perlu menambahkan 2 folder lagi didalam folder packages, yaitu folder nama vendor nya dan folder nama package nya.. untuk folder nama package nya akan kita taruh didalam folder nama vendor nya..
Maka struktur akhir nya nanti akan seperti berikut: “../packages/sangcahayaid/kalkulator”..
Jadi nanti untuk setiap source code package nya yang akan kita buat, kita letakkan didalam folder kalkulator..
Membuat file composer.json untuk package nya
Langkah selanjutnya yaitu kita akan membuat file composer.json didalam folder package kalkulator nya..
Di Terminal atau CMD, kalian arahkan ke folder kalkulator tadi, jadi kalian masuk kedalam folder tersebut, kemudian jalankan perintah “composer init”..
Nanti akan ada beberapa konfigurasi/pertanyaan, kalian isi saja seperti pada gambar berikut:
Kamu akan dihadapi beberapa pertanyaan untuk konfigurasi file composer nya..
- Package name : Ini kamu kosongin aja, langsung aja pencet enter..
- Description : Kamu isi description dari package yang akan kamu buat
- Author : Author dari si pembuat package tersebut, biasanya sudah otomatis terisi, langsung saja tekan Enter..
- Minimum Stability : Kosongin saja, langsung aja Enter..
- Package Type : isi dengan library
- License : isi dengan MIT
- Would you like to define your dependencies (require) interactively : isi dengan no..
- Would you like to define your dev dependencies (require-dev) interactively : isi dengan no..
- Add PSR-4 autoload mapping? Maps namespace “Qia\Kalkulator” to the entered relative path : Kosongkan saja, langsung aja Enter..
Perintah diatas akan membentuk sebuah file composer.json yang isi nya adalah seperti berikut:
../packages/sangcahayaid/kalkulator/composer.json
{ "name": "qia/kalkulator", "description": "Kalkulator sederhana dengan penambahan/pengurangan", "type": "library", "license": "MIT", "autoload": { "psr-4": { "Qia\\Kalkulator\\": "src/" } }, "authors": [ { "name": "fadlyyy", "email": "fadlyrifai95@gmail.com" } ], "require": {} }
Jika file composer.json yang kamu generate tidak ada key “autoload” nya, silahkan tambahkan sendiri seperti diatas..
Jadi fungsi dari perintah autoload ini adalah untuk memanggil otomatis package tersebut yang ada pada direktori “src” (Nanti akan kita buat folder src), jadi kita tidak perlu lagi menggunakan perintah include atau require..
Kemudian nanti jika kita ingin memanggil package nya, kita bisa jalankan perintah use Qia\Kalkulator\NamaClassNya;.. Atau nanti bisa kita buatkan alias nya juga agar lebih simple pada saat pemanggilan nya..
Membuat Isi Package dengan Class
Sekarang selanjutnya adalah kita buat sebuah folder baru dengan nama src didalam folder packages kalkulator nya, dimana nanti didalam folder tersebut kita akan buatkan sebuah file class baru dengan nama SimpleKalkulator..
Oh iyaa sedikit catatan, sebetulnya folder src tersebut sudah otomatis terbentuk pada saat kita menjalankan perintah composer init, tapi terkadang ada yang tidak terbentuk secara otomatis..
Bagi kalian yang tidak terbentuk secara otomatis, silahkan buat folder src sendiri secara manual..
Maka nanti struktur folder nya akan menjadi seperti berikut:
../packages/sangcahayaid/kalkulator/src/SimpleKalkulator.php
Kemudian kalian buka file tersebut (SimpleKalkulator.php), dan kalian isi seperti berikut:
<?php namespace Sangcahayaid\Kalkulator; /** * Basic Calculator. * */ class SimpleKalkulator { /** * Menjumlahkan semua data dalam sebuah array. * * @param array $data * @return integer */ public static function penjumlahan(array $data) { return array_sum($data); } }
Jadi didalam file tersebut, kita menambahkan sebuah function static untuk proses penjumlahan data..
Data yang dipassing kedalam function tersebut harus berupa array..
Mendaftarkan di composer.json utama
Kemudian langkah terakhir, kita juga perlu mendaftarkan packages tersebut kedalam file composer.json yang berada didalam folder root, bukan file composer.json yang ada didalam package kita yah, tapi yang ada di folder root yang sejajar dengan folder app, routes, dsb..
Dibuka aja file tersebut, kemudian didalam autoload psr-4, tambahkan kode seperti berikut “Sangcahayaid\\Kalkulator\\”: “packages/sangcahayaid/kalkulator/src”..
.... "autoload": { "psr-4": { "App\\": "app/", "Database\\Factories\\": "database/factories/", "Database\\Seeders\\": "database/seeders/", "Sangcahayaid\\Kalkulator\\": "packages/sangcahayaid/kalkulator/src" } }, ....
Setelah ditambahkan kode seperti diatas, sekarang didalam terminal kalian jalankan perintah composer dump-autoload..
Kalian menjalankan perintah tersebut di folder root nya yah, bukan di folder package nya, jadi kamu arahkan CMD/Terminal nya ke halaman awal project nya..
Testing Package yang sudah kita buat..
Yeah sekarang saat nya kita testing package yang sudah kita buat sebelum nya..
Kita testing langsung di file ../routes/web.php dengan membuat route baru disana..
Kita buka aja file nya, dan tambahkan route baru seperti berikut:
../routes/web.php
Route::get('/test-package',function(){ // test penjumalah $data_array_yg_ingin_dijumlah = [3,4,1]; $hasil = \Sangcahayaid\Kalkulator\SimpleKalkulator::penjumlahan($data_array_yg_ingin_dijumlah); echo "hasilnya adalah ".$hasil; });
Diatas, kita membuat route baru dengan method get, untuk url nya yaitu mengarah ke ../test-package..
Didalam route tersebut kita mendefine sebuah variable array yang kita isi dengan angka-angka yang ingin kita jumlahkan..
.... $data_array_yg_ingin_dijumlah = [3,4,1]; ....
Kemudian kita panggil package dan class yang sudah kita buat sebelum nya, kita panggil function nya dan kita passing variabel array tersebut, dan kemudian kita tampung return nya kedalam variabel hasil..
$hasil = \Sangcahayaid\Kalkulator\SimpleKalkulator::penjumlahan($data_array_yg_ingin_dijumlah);
Sekarang coba kalian akses url tersebut, maka nanti hasilnya akan menjadi seperti ini:
http://127.0.0.1:8000/test-package
hasilnya adalah 8, angka 8 adalah hasil dari penjumlahan dari angka2 yang sudah kirim ke function nya..
Publish Package ke Packagist
Setelah package nya sudah berhasil terbentuk dan sudah berhasil juga untuk dijalankan..
Selanjut nya kalian bisa tentukan sendiri nih apakah package nya ingin kalian publish ke packagist atau mau kalian simpan sendiri aja..
Tentu saja jika kamu publish ke packagist, maka package yang sudah kamu buat bisa juga digunakan oleh orang lain, setidak nya hidup kita bisa menjadi lebih bermanfaat untuk orang lain hehe :D..
Nah kalo kamu ingin publish ke packagist, kamu harus buat akun github terlebih dahulu, kemudian buat repository baru disana..
Buat Repository Github
Silahkan kamu buat repository baru terlebih dahulu, untuk nama repository nya bebas, boleh apa saja..
Disini saya sudah membuat repository nya dengan nama sangcahayaid_kalkulator..
Push Ke Repo Nya
Kemudian kamu push source package kamu kedalam repository tersebut..
Caranya yaitu, pada CMD/Terminal mu, silahkan arahkan ke direktori package nya..
../packages/sangcahayaid/kalkulator
Kemudian jalankan perintah berikut:
git init git remote add origin https://github.com/fadlyshafa/sangcahayaid_kalkulator.git git add . git commit -m "push to repo" git push origin master
Untuk url repository nya silahkan kalian sesuaikan sendiri yah, disini url repo saya yaitu : “https://github.com/fadlyshafa/sangcahayaid_kalkulator.git”..
Kemudian setelah itu, kalian pastikan juga pada repository mu sudah ada file2 yang barusan kamu push, karena tadi kita nge push nya ke branch master, maka data nya akan masuk ke branch tersebut..
Publish ke Packagist
Setelah kamu sudah berhasil push package nya ke repo github, sekarang akan kita daftarkan ke packagist..
Tapi sebelum nya, bagi kamu yang belum memiliki akun, silahkan lakukan pendaftaran terlebih dahulu, kamu bisa daftar disini..
Atau kamu bisa juga langsung sign in dengan menggunakan akun github mu..
Kemudian kamu submit package mu dengan memasukkan url repository mu, seperti pada gambar berikut:
Kemudian langsung aja klik check, kalo berhasil nanti akan muncul notif seperti berikut:
Kalo sudah muncul halaman seperti di atas, berarti tanda nya package kita sudah berhasil ke publish dan dapat digunakan oleh orang lain..
Setting Webhook untuk auto update packagist
Ketika kita melakukan update code pada repository package nya, maka kita juga ingin data tersebut otomatis terupdate ke packagist nya..
Agar nanti para pengguna package nya juga dapat mendapatkan update code terbaru..
Nah caranya yaitu dengan setting webhook repository nyaa..
Pada halaman repository, kamu masuk ke menu settings, kemudian di sebelah kiri cari menu sidebar webhook, kemudian klik button add webhook..
Kamu konfigurasi seperti pada gambar berikut:
Yang perlu kamu konfigurasi yaitu:
- Payload URL kamu isi dengan “https://packagist.org/api/github?username=fadlyshafa”, untuk username nya silahkan disesuaikan dengan username akun packagist kamu..
- Content-type pilih yang application/json..
- Secret adalah API Token packagist mu, bisa kamu cek disini..
Setelah itu silahkan klik button add webhook..
Coba Install Package yang sudah kita buat dari Project Lain
Nah kalo sudah kita publish package nya, sekarang kita akan coba install package tersebut dengan menggunakan project yang baru..
Pada halaman packagist nya, kita sudah mendapatkan script untuk cara instalasi nya, pada package yang sudah saya buat, perintah nya yaitu:
composer require qia/kalkulator
Sekarang kalian install laravel baru terlebih dahulu, setelah itu, pada CMD/Terminal jalankan perintah:
composer require qia/kalkulator
Setelah berhasil terinstall, maka nanti didalam folder “../vendor”, kamu akan menemukan folder package mu..
Coba dibuka file SimpleKalkulator.php nya, maka nanti kamu akan menemukan namespace nya..
Sekarang kalian buka file composer.json yang ada di root project, dan tambahkan script seperti berikut pada bagian autoload.psr-4:
"autoload": { "psr-4": { "App\\": "app/", "Database\\Factories\\": "database/factories/", "Database\\Seeders\\": "database/seeders/", "Sangcahayaid\\Kalkulator\\": "vendor/qia/kalkulator/src/" } },
Kemudian pada CMD/Terminal, jalankan perintah:
composer dump-autoload
Sekarang coba kalian buat route baru seperti berikut, setelah itu kalian coba akses route nya..
Route::get('/test-package',function(){ // test penjumalah $data_array_yg_ingin_dijumlah = [3,4,1]; $hasil = \Sangcahayaid\Kalkulator\SimpleKalkulator::penjumlahan($data_array_yg_ingin_dijumlah); echo "hasilnya adalah ".$hasil; });
Seharusnya akan tampil seperti berikut:
Itu berarti tanda nya, packages mu sudah berhasil digunakan didalam project lain..
Rekomendasi Package yang wajib dipasang
Kemudian ada sedikit tambahan informasi dari saya mengenai beberapa jenis package yang menurut saya wajib kamu pasang di project mu..
Ga wajib sih sebetulnya, tapi mungkin bisa bermanfaat untuk kamu gunakan pada saat sedang development suatu project, apa saja itu?
Yajra Datatables Server Side
Yang pertama yaitu yajra datatables, ini adalah package khusus untuk laravel yang digunakan untuk menampilkan data dalam jumlah besar..
Ribuan atau bahkan jutaan data tidak akan terasa berat..
Kalo terbiasa menggunakan datatables, mungkin tidak akan terasa asing, hanya saja untuk yajra ini datatables nya yaitu sudah server side..
Jadi setiap pemrosesan data nya dilakukan pada sisi server..
Untuk lebih jelas nya, serta bagaimana cara penggunaan nya, bisa kamu buka postingan saya sebelum nya yang membahas lengkap tentang Yajra Datatables Disini..
MaatWebsite Laravel Excel
Kalo package yang satu ini untuk export data excel/csv..
Selain untuk export data, package ini juga bisa digunakan untuk import data ke dalam database via csv..
Untuk postingan selanjutnya, nanti mimin mau buatkan juga tutorial export data ke excel atau import data via .csv menggunakan package ini..
Update, mimin sudah buatkan tutorial lengkap export data excel nya, bisa kamu kunjungi disini..
Hebat nya lagi, package ini juga bisa digunakan untuk Import data kedalam database via Excel, untuk caranya sudah saya buatkan tutorial disini..
Kalo mau liat halaman resmi nya bisa kamu kunjungi disini..
dompdf
Package yang satu ini digunakan untuk export data ke dalam pdf..
Untuk cara penggunaan nya juga mudah, nanti akan dibuatkan juga tutorial untuk export data ke pdf dengan menggunakan package ini..
Untuk halaman resmi nya bisa kamu kunjungi disini..
Update: Mimin sudah membuatkan tutorial untuk export data kedalam format pdf, bisa kalian kunjungi halaman berikut yaa: Tutorial Lengkap Export PDF Laravel dengan domPdf..
Laravel Intervention Image
Kalo package yang satu ini digunakan untuk mengcompress gambar, jadi sangat berguna sekali bagi kamu yang ingin mengehemat resource server..
Nanti akan mimin buatkan juga tutorial untuk cara penggunaan nya..
Akhir Kata
Sampi sini kalian sudah berhasil membuat Package sendiri dan juga sudah mempublish nya ke packagist..
Dengan begitu, package2 yang sudah kamu buat dapat digunakan juga oleh orang lain yang membutuhkan..
Sekian dari saya, semoga bermanfaat yaa..
Terima kasih..
Support Us
Jika artikel ini bermanfaat untuk kamu, membantu menyelesaikan masalah yang sedang kamu hadapi, kamu juga bisa dukung kami dengan mengunjungi halaman berikut: https://saweria.co/sangcahayaid
Terima kasih..
[…] Excel Laravel – Halo semuanya, di postingan sebelumnya yaitu tentang Cara Membuat Package Laravel Sendiri dan Publish ke Packagist, saya memberikan beberapa rekomendasi package yang wajib kamu […]