Composer Dengan Repositori Localhost


Umumnya untuk memanfaatkan Composer kita wajib daring (online) untuk memanggil repositori yang berada pada situs packagist.org. Otomatis dengan demikian, jika kita ingin membuat dependensi harus diunggah ke sana terlebih dahulu. Lalu bagaimana jika kita tidak ingin mengunggah dependensi ke packagist.org namun tetap dapat menggunakan Composer? Yakni, gunakan repositori dari localhost.

Sebenarnya, apa sih tujuannya menggunakan Composer dengan repositori localhost? Bukankah Composer merupakan paket manajer yang memang ditunjukan untuk mempermudah menggunakan paket-paket dependensi dari luar?

Ada pelbagai macam alasan untuk menggunakan repositori lokal, umumnya seperti berikut:

  • Dependensi yang dibuat masih tahap pengembangan dan belum sempurna. Belum sepurna di sini bisa diartikan dependensi masih sebatas coba-coba, atau ia masih belum disertakan dokumentasi yang lengkap, sehingga orang lain tidak bisa memanfaatkan dependensi tersebut terkecuali si developer-nya.
  • Dependensi yang dibuat memang tidak untuk disebarluaskan. Mungkin karena memang belum siap disebarluaskna atau entah karena memang kebijakannya belum atau tidak nyetujui.
  • Tidak ingin menggunakan banyak dependensi buatan orang lain. Meskipun seharusnya bisa saja kita ungguah dulu, lalu gunakan dependensi yang telah kita buat tersebut. Alasan poin ke-3 akan kuat jika dihubungankan dengan alasan poin pertama.

Dari semua alasan di atas, yang paling umum alasannya adalah dependensi belum siap dipublikasi, masih sekadar coba-coba.

Persiapan

Sebelum praktek ada beberapa persiapan yang perlu:

  • Sudah memasang Composer dan sudah dapat dipergunakan dengan sebagai mana mestinya. Jika tahap ini belum sukses, Anda bisa lihat postingan sebelumnya di sini.
  • Anda sudah memasang paket git pada sistem operasi Anda. Untuk cara pemasangannya bisa lihat di: https://git-scm.com/downloads.

Penyangkalan (Disclaimer)

Pada dasarnya tutorial ini ditunjukan untuk berbagai jenis sistem operasi yang umum dipakai sebagai desktop / personal computer seperti Windows, MacOS dan GNU/Linux, namun dalam prakteknya di sini saya hanya menggunakan di GNU/Linux. Bagi Anda yang bukan pengguna GNU/Linux tulisan ini masih tetap dapat dipergunakan, hanya saja Anda perlu menyesuaikannya dilingkungan sistem operasi Anda tersebut.

Lagipula beberapa perintah-perintahnya ada yang mirip, seperti mkdir dan echo. Di semua OS baik Windows, MacOS dan GNU/Linux semua menggunakan perintah tersebut.

Memulai

Pertama-tama persiapkan satu direktori bebas dengan nama apa saja, Contoh saja misalnya composerku. Kemudian buat 2 direktori, pertama untuk nama paket dependensi Anda, contoh dengan nama paketane, lalu dalam direktori itu buat direktori bernama src. Nah, kemudian yang kedua untuk direktori proyek Anda, misalnya proyekane.

Susunan Gambaran direktorinya seperti berikut:

Caranya membuatnya buka Terminal, atau cmd di Windows.

Kemudian lakukan perintah berikut:

mkdir composerku
cd composerku
mkdir paketane
mkdir paketane/src
mkdir proyekane

Masukan paket dependensi Anda di paketane/src/PaketAne.php. Contoh:

Perhatian nama berkas harus CamelCase.

<?php

namespace AliSoftware;

Class PaketAne
{
    public static function hello($str)
    {
        print $str;
    }
}

Setelah itu, pada masing-masing direktori paketane dan proyekane, keduanya Anda buat berkas bernama composer.json.

echo > paketane/composer.json
echo > proyekane/composer.json

Kemudian Anda isikan pada composer.json di direktori paketane dengan kode berikut:

{
    "name": "alisoftware/paketane",
    "type": "library",
    "description": "My test package",
    "license": "MIT",
    "authors": [
        {
            "name": "Ali",
            "email": "admin@situsali.com",
            "homepage": "https://situsali.com",
            "role": "Developer"
        }
    ],
    "require":{
      "php": ">=5.4.0",
      "ext-curl": "*"
    },
    "autoload": {
        "psr-4": {
            "AliSoftware\\": "src/"
        }
    }
}

Perhatian kode di atas menggunakan PSR-4, jika Anda ingin menggunakan PSR-0 ganti dengan:

...
    "autoload": {
        "psr-0": {
            "AliSoftware": "src"
        }
...

Kemudian yang kedua, isi composer.json pada direktori proyekane dengan kode berikut:

{
    "name": "alisoftware/project",
    "description": "Test project",
    "license": "MIT",
    "authors": [
        {
            "name": "Ali",
            "email": "admin@itusali.com"
        }
    ],
    "minimum-stability": "dev",
    "repositories": [
        {
            "type": "vcs",
            "url": "../paketane"
        }
    ],
    "require": {
        "alisoftware/paketane": "*"
    }
}

Kemudian setelah itu kita buat inisial git di dalam direktori paketane.

cd paketane
git init

Langsung saja Anda commit paket Anda.

git add -A
git commit -m "first commit"

Nah, jika sudah, paket seharusnya bisa langsung dipasang dengan perintah composer install, seperti berikut:

cd ..
cd proyekane
composer install

Walhasil, kita tinggal memanggil autoload. Seperti berikut:

<?php

require __DIR__ . '/vendor/autoload.php';

use \AliSoftware\PaketAne as Paket;

Paket::hello('Hello World');

Selesai sudah Anda dapat membuat suatu dependensi dengan memanfaatkan Composer yang berada pada repositori localhost. Bagaimana jika Anda ingin melakukan perubahan atau penyuntingan pada dependensi? Cukup lakukan pada paket Anda:

git add -A
git commit -m "editing ... "

Kemudian tinggal perbarhui di proyek Anda dengen perintah:

composer update

Cukup mudah bukan? Semoga tulisan ini bermanfaat. 😁