Akademi Manajemen Informatika

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.

READ  Data Cleaning Adalah: Pengertian, Urgensi, Manfaat, dan 3 Contohnya

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.

READ  Pengertian, Manfaat, Alur Kerja, dan 5 Contohnya

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:

Submit Page

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:

Project Submitted

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.

READ  Unified Modeling Language (UML) | Sandi Dharma

Output:

Engkau juga Dapat mencobanya melalui browser Kalau folder Engkau berada di dalam document root apache seperti htdocs.

Hello World!

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.

Tombol Update

Setelah update selesai, Engkau akan Menonton versi baru sesuai dengan tag yang kita buat ditambahkan pada bagian sebelah kanan halaman package.

Tombol Update

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…