Halo… Selamat datang kembali di blog Sandi Dharma. Pada kesempatan kali ini kita akan belajar bagaimana Metode Membikin dan mempublikasikan composer project di packagist. Kalau Engkau belum mengetahui apa itu composer, Engkau Dapat baca postingan tentang apa itu composer terlebih dahulu ya.
Kepada mengikuti tutorial ini, pastikan Engkau sudah menginstal composer di komputer kesayangan Engkau. Kalau belum, Engkau Dapat mengikuti langkah menginstall composer di sini.
Membikin Composer Project
Kepada Membikin composer project, Engkau Dapat jalankan perintah composer init. Buatlah sebuah folder baru di komputer Engkau kemudian buka folder tersebut di terminal kesayangan Engkau dan jalankan perintah berikut ini:
Setelah menjalankan perintah tersebut, Engkau akan diminta Kepada mengatur beberapa konfigurasi, diantaranya sebagai berikut:
1. Package Name
Ini adalah nama Kepada package Engkau di packagist. Nama package terdiri dari dua bagian Yakni nama vendor dan nama package, dipisahkan dengan garis miring. contohnya seperti berikut:
ruangdeveloper/belajar-publish-project
Dari kode tersebut: ruangdeveloper adalah nama vendor, sedangkan belajar-publish-project adalah nama package. Begitu pertama kali mempublikasikan package, Engkau harus memilih nama vendor yang belum Eksis di packagist. Kalau secara kebetulan nama vendor yang Engkau inginkan telah digunakan dan dipublish ke packagist, Engkau Mempunyai dua pilihan Yakni mencari nama yang lain atau menjadi maintainer dari salah satu package yang dimiliki oleh vendor tersebut.
2. Description
Ini adalah deskripsi singkat Kepada package Engkau di packagist. Begitu Membikin package sungguhan dan Ingin serius digunakan, Engkau harus memberi deskripsi yang sesuai dengan project yang Engkau buat ya.
3. Author
Ini adalah informasi author Kepada package Engkau di packagist. Berisi nama dan alamat email dengan Teladan format seperti berikut ini:
ruangdeveloper [email protected]>
4. Minimum Stability
Minimum stability digunakan Kepada memfilter package yang akan Engkau install sebagai dependency Begitu Membikin project. Nilai defaultnya adalh stable
. Segala package di composer yang stabilitynya kurang dari minimum stability project Engkau akan diabaikan ketika Engkau melakukan installasi dependency.
5. Package Type
Ini adalah informasi yang memberitahu tipe apa project yang sedang Engkau buat. Contohnya library, project, metapackage, atau composer-plugin.
6. License
Ini adalah lisensi Kepada project yang sedang Engkau buat. Engkau Dapat memilih ISC, MIT, atau lisensi yang lainnya sesuai keinginan Engkau.
Selain konfigurasi-konfigurasi tersebut, Engkau juga akan ditanyakan apakah Ingin menambahkan dependencies dan dev dependencies Kepada project Engkau, serta konfigurasi namespace Kepada PSR-4 autoload mapping.
Berikut ini adalah konfigurasi yang saya lakukan ketika init composer project.
Package name (/) [rizky/belajar-publish-project]: ruangdeveloper/belajar-publish-project
Description []: Tutorial Membikin dan mempublish composer project
Author [kykurniawan [email protected]>, n to skip]: ruangdeveloper [email protected]>
Minimum Stability []: stable
Package Type (e.g. library, project, metapackage, composer-plugin) []: library
License []: MIT
Define your dependencies.
Would you like to define your dependencies (require) interactively [yes]? no
Would you like to define your dev dependencies (require-dev) interactively [yes]? no
Add PSR-4 autoload mapping? Maps namespace "RuangDeveloper\BelajarPublishProject" to the entered relative path. [src/, n to skip]: src/
Setelah inisialisasi project selesai, dalam folder Engkau akan terdapat sebuah file bernama package.json
yang berisi kode kurang lebih seperti berikut ini:
{
"name": "ruangdeveloper/belajar-publish-project",
"description": "Tutorial Membikin dan mempublish composer project",
"type": "library",
"license": "MIT",
"autoload": {
"psr-4": {
"RuangDeveloper\\BelajarPublishProject\\": "src/"
}
},
"authors": [
{
"name": "ruangdeveloper",
"email": "[email protected]"
}
],
"minimum-stability": "stable",
"require": {}
}
Selain itu juga akan Eksis folder Hampa bernama src
. Di folder src
inilah kita akan meletakkan kode php kita. Eksis juga folder bernama vendor
yang berisi dependencies Kepada project yang kita gunakan.
Lanjut…
Setelah inisialisasi selesai, kita akan buat kode sederhana sebagai sample project kita. Dalam folder src
, buatlah sebuah file php bernama Main.php
. Engkau juga Dapat menggunakan nama file lainnya.
Isi file Main.php
php
namespace RuangDeveloper\BelajarPublishProject;
class Main
{
public function getHello()
{
return "Hello World!";
}
}
Di dalam folder tersebut kita Membikin kelas php sederhana bernama Main
yang di dalamnya terdapat satu buah method bernama getHello
yang akan mengembalikan teks Hello World!.
Yang harus Engkau perhatikan adalah namespace yang kita gunakan. Pada kode tersebut kita menggunakan namespace seperti ini:
namespace RuangDeveloper\BelajarPublishProject;
Darimana namespace ini kita dapatkan? Dari konfigurasi autoload PSR-4 di file composer.json
"autoload": {
"psr-4": {
"RuangDeveloper\\BelajarPublishProject\\": "src/"
}
},
Pada konfigurasi tersebut kita menggunakan namespace Kepada mapping ke folder src
, sehingga file php kita yang Eksis di dalam folder src
harus Mempunyai awalan namespace yang sama agar composer Dapat melakukan autoload.
Kepada lebih memudahkan, biasanya namespace akan disesuaikan dengan Letak file dalam folder src
. Sebagai Teladan, Kalau Engkau Mempunyai file yang berada dalam folder src/app/configs, maka Engkau Dapat menggunakan namespace sebagai berikut:
namespace RuangDeveloper\BelajarPublishProject\App\Configs;
Mempublikasikan Composer Project
Setelah project kita selesai, langkah selanjutnya adalah mempublikasikan project kita ke packagist. Kepada mempublikasikan project di packagist, Engkau harus Membikin akun terlebih dahulu. Kalau Engkau belum Mempunyai akun, silahkan buat dulu yaa… kita Kagak akan bahas tutorial pembuatan akunnya di sini.
Selain akun packagist, kita juga harus menyimpan project kita sebagai repository di version control seperti GitHub atau GitLab. Pada tutirial ini, saya menggunakan GitHub Kepada menyimpan projectnya.
Note: Jangan lupa Kepada Membikin file .gitignore Kepada menghindari folder vendor di project ikut terupload ke GitHub.
Lanjut…
Setelah project berada di github. Silahkan login ke website packagist, kemudian klik menu submit di navbar sehingga masuk ke halaman berikut:
Pada kolom input Repository URL, silahkan masukkan url repository project Engkau yang Eksis di GitHub, kemudian klik Check.
Kalau Kagak Eksis masalah pada nama vendor yang Engkau gunakan, akan muncul tombol Submit. Klik tombol tersebut Kepada lanjut mempublikasikan project.
Kalau sudah selesai mempublish Engkau akan dialihkan ke halaman package seperti berikut ini:
Engkau akan Menonton warning yang memberitahu bahwa auto-update package Kagak aktif. Auto-update berfungsi Kepada memperbarui package secara Mekanis ketika terjadi perubahan di repository GitHub. Engkau Dapat mengaktifkannya dengan Metode memngikuti langkah yang diberikan pada link yang tersedia.
Mencoba Menggunakan Package
Setelah selesai mempublikasikan composer project menjadi sebuah package, langkah selanjutnya kita akan mencoba Kepada menggunakan package tersebut.
Buatlah sebuah project composer baru dengan Metode yang kurang lebih sama seperti sebelumnya. Engkau Dapat menggunakan nama project yang berbeda Kepada membedakan namespace.
Setelah project dibuat, buka folder project di terminal kesayangan Engkau dan install package yang telah dipublish dengan perintah berikut ini.
composer require ruangdeveloper/belajar-publish-project:dev-main
Note: Sesuaikan dengan nama vendor dan nama package yang sudah Engkau publish ya.
:dev-main pada akhir nama package adalah versi yang Eksis di packagist. Kepada Begitu ini Engkau harus menuliskannya karena package yang kita publish Lagi versi development. Kita akan bahas lebih lanjut pada bagian berikutnya.
Berikut ini adalah proses install package
$ composer require ruangdeveloper/belajar-publish-project:dev-main
./composer.json has been updated
Running composer update ruangdeveloper/belajar-publish-project
Loading composer repositories with package information
Updating dependencies
Lock file operations: 1 install, 0 updates, 0 removals
- Locking ruangdeveloper/belajar-publish-project (dev-main f68e1f7)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Downloading ruangdeveloper/belajar-publish-project (dev-main f68e1f7)
- Installing ruangdeveloper/belajar-publish-project (dev-main f68e1f7): Extracting archive
Generating autoload files
Setelah package selesai diinstall, dalam folder src
project Engkau Begitu ini buatlah sebuah file bernama index.php atau Engkau Dapat menggunakan nama lainnya. Tulislah kode dalam file tersebut kurang lebih seperti ini:
php
use RuangDeveloper\BelajarPublishProject\Main;
require_once "../vendor/autoload.php";
$main = new Main;
echo $main->getHello();
Setelah itu, jalankan file index.php melalui terminal dengan Metode masuk ke folder src dan jalankan peritah berikut ini.
Output:
Engkau juga Dapat mencobanya melalui browser Kalau folder Engkau berada di dalam document root apache seperti htdocs.
Membikin Versi Package Menggunakan Tag
Package yang kita publish Lagi menggunakan versi development. Ini akan menyulitkan kita Kepada menginstall package yang berada di versi development ke dalam project dengan minimum stabilitynya stable. Oleh karena itu kita akan merilis versi pertama Kepada package kita.
Buatlah sebuah tag baru dengan nama tag v1.0.0 di repository project. Engkau Dapat melakukannya melalui terminal di komputer lokal kemudian push perubahannya atau Dapat langsung membuatnya melalui website GitHub.
Kepada melakukannya melalui terminal Engkau Dapat ikuti perintah berikut ini:
Membikin tag
git tag -a v1.0.0 -m "Initial Version"
Mempublish tag
Setelah perintah tersebut dijalankan, akan Eksis tag baru di repository GitHub kita. Engkau Dapat memastikannya dengan membuka repository GitHub dan lihat pada bagian release.
Setelah menambahkan tag, langkah selanjutnya adalah mengupdate package kita di packagist. Caranya tinggal klik tombol update yang Eksis di halaman package.
Setelah update selesai, Engkau akan Menonton versi baru sesuai dengan tag yang kita buat ditambahkan pada bagian sebelah kanan halaman package.
Sekarang Engkau Dapat menginstall package tanpa menambahkan keyword dev-main karena composer akan secara Mekanis menggunakan versi terbaru kita Yakni v1.0.0
$ composer require ruangdeveloper/belajar-publish-project
Info from https://repo.packagist.org: #StandWithUkraine
Using version ^1.0 for ruangdeveloper/belajar-publish-project
./composer.json has been updated
Running composer update ruangdeveloper/belajar-publish-project
Loading composer repositories with package information
Updating dependencies
Lock file operations: 1 install, 0 updates, 0 removals
- Locking ruangdeveloper/belajar-publish-project (v1.0.0)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
- Installing ruangdeveloper/belajar-publish-project (v1.0.0): Extracting archive
Generating autoload files
Engkau Dapat membuktikannya dengan Metode Menonton file package.json
.
"require": {
"ruangdeveloper/belajar-publish-project": "^1.0"
}
Akhirnya…
Selamat! Sekarang Engkau sudah Dapat Membikin dan mempublikasikan composer project Punya Engkau sendiri di packagist. Selanjutnya Engkau Dapat mencoba Kepada Membikin package yang bermanfaat Bagus itu Kepada project yang Engkau buat ataupun Kepada project orang lain. Engkau Dapat belajar mengelola project open source Punya Engkau sendiri dan mengajak orang lain Kepada ikut berkontribusi.
Tamat jumpa…