Kurnia Andi Nugroho
Kalau teman-teman perhatikan, ketika kita baru saja meng-install Laravel atau menjalankan perintah composer install
, di dalam project kita akan muncul sebuah folder bernama vendor.
Nah, folder ini bisa dibilang adalah jantung dari project Laravel, tapi dalam konteks “mesin”. Artinya, hampir semua hal yang membuat Laravel bisa berjalan—mulai dari framework inti, library tambahan, sampai dependency pihak ketiga—itu semuanya disimpan di dalam folder vendor.
Folder ini tidak dibuat manual, melainkan otomatis dibentuk oleh Composer, yaitu package manager di PHP. Setiap kali kita menambahkan package dengan composer require ...
, Composer akan:
Kalau kita buka folder vendor, biasanya kita akan menemukan:
Jadi kalau ibarat rumah, folder vendor ini adalah ruang mesin: kita tidak perlu bongkar mesinnya, cukup tahu cara menyalakan dan menggunakan rumahnya.
Salah satu file penting di dalam vendor adalah autoload.php
. File ini yang bertugas mendaftarkan semua package agar bisa dipanggil di project. Misalnya saat kita menulis use Carbon\Carbon;
di controller, itu bisa berjalan karena autoload.php
sudah mendaftarkan class Carbon.
Biasanya file ini dipanggil di public/index.php
Laravel. Jadi tanpa autoload, Laravel tidak akan tahu di mana lokasi library yang kita butuhkan.
Satu prinsip penting: jangan pernah mengedit langsung file di dalam vendor. Alasannya:
composer update
semua akan hilang.Kalau teman-teman cek di file .gitignore
, folder vendor/ biasanya sudah otomatis diabaikan. Artinya, kita tidak perlu meng-upload vendor ke GitHub. Kenapa? Karena semua dependency sudah didefinisikan di composer.json
dan composer.lock
. Jadi cukup commit kedua file ini, lalu saat orang lain clone project kita, mereka tinggal jalankan composer install
, dan vendor akan terbentuk otomatis.
Jadi, folder vendor adalah tempat berkumpulnya semua package dan library yang dibutuhkan oleh Laravel agar bisa berjalan. Kita tidak perlu mengutak-atik isinya secara manual, cukup gunakan Composer untuk menambahkan, menghapus, atau meng-update package. Anggap saja vendor itu seperti gudang peralatan: kita tidak membuat peralatan sendiri di sana, tapi cukup memanggil dan memanfaatkan apa yang tersedia.
Kurnia Andi Nugroho
Web & Mobile App Developer, Laravel, Inertia, Vue.Js, React.Js
Founder of Lagikoding.com Laravel Enthusiast & Web Developer