EN

Composer dengan repository lokal

Beberapa waktu lalu saya lagi ngerjain sebuah proyek Laravel. Nah, proyek ini butuh sebuah package internal yang kami kembangkan sendiri—semacam library kecil untuk komunikasi API. Biasanya, kami publish package itu ke GitHub lalu instal via Composer dengan private repository.

Tapi ada momen di mana saya belum siap publish ke mana-mana. Package itu masih berantakan, masih sering berubah. Saya hanya ingin bisa coba-coba package tersebut di proyek Laravel saya tanpa ribet harus push-pull ke repo.

Di sinilah akhirnya saya ketemu Composer path.

Awal mula kebingungan

Jadi ceritanya, saya punya dua folder:

/home/salim/projects/my-app
/home/salim/projects/my-package

my-app adalah aplikasi Laravel, sedangkan my-package adalah package lokal yang saya kembangkan. Saya ingin agar my-app bisa langsung pakai my-package, tanpa harus publish ke mana-mana.

Awalnya saya coba langsung pakai require di Composer:

composer require salim/my-package:dev-my-feature-123

Tapi tentu saja gagal, karena Composer nggak tahu package itu ada di mana.

Ketemu jalan: repository tipe path

Setelah utak-atik dokumentasi Composer, ternyata ada satu cara: repository tipe path.

Dengan ini, saya bisa bilang ke Composer: “Hei, kalau kamu butuh package salim/my-package, jangan cari di Packagist atau GitHub. Cari saja di folder sebelah sini.”

Caranya cukup tambahin konfigurasi di composer.json milik my-app. Kamu bahkan bisa menyetel version pura-pura yang kelak akan kamu rilis:

{
  "repositories": [
    {
      "type": "path",
      "url": "/home/salim/projects/my-package",
      "options": {
        "versions": {
          "salim/my-package": "1.1.15"
        }
      }
    }
  ],
  "require": {
    "salim/my-package": "1.1.15"
  }
}

Lalu jalankan:

composer update salim/my-package

Composer langsung ngerti, dan package lokal saya otomatis terinstal.

Kelebihan yang berasa banget

Yang paling menyenangkan dari path ini adalah kita bisa langsung ngedit source code package tanpa perlu publish ulang. Composer akan melakukan symlink (kalau OS mendukung), jadi perubahan di folder my-package langsung terasa di my-app.

Misalnya saya nambahin method baru di MyService.php di my-package, dan… boom! langsung bisa dipakai di my-app.

Pelajaran yang saya dapat

Dari pengalaman ini, ada beberapa hal penting yang bisa jadi catatan:

Penutup

Buat saya pribadi, Composer path ini kayak jalan pintas rahasia yang bikin workflow jauh lebih fleksibel. Rasanya seperti punya dapur eksperimen di rumah sendiri, sebelum akhirnya menyajikan hidangan yang rapi di meja makan orang lain.

Kalau kamu sering bikin package PHP untuk project internal, cobain deh. Siapa tahu ternyata fitur ini jadi penyelamat kamu juga.