Perintah-perintah Composer: require
Pada materi ini (dan beberapa materi berikutnya) kita akan bahas perintah-perintah umum yang sering digunakan pada composer, yaitu :
- require
- create-project
- install, dan
- update
Perintah-perintah pada Composer dapat kita lakukan melalui terminal (pada linux dan mac) atau command prompt atau powershell (pada windows).
composer create-project
Perintah ini kita gunakan untuk menambahkan sebuah paket ke dalam project kita, dan menjadikan paket tersebut sebagai dependensi dari project kita.
Struktur perintahnya :
composer require nama-paket versi
Contoh perintahnya :
$ composer require nesbot/carbon 1.20.0
Makna perintah :
“Composer, saya memerlukan paket nesbot/carbon
versi 1.20.0
dalam project saya.”
Di sini kita ambil contoh sebuah paket bernama “nesbot/carbon”. Sebagai info, paket ini adalah paket ekstensi atau turunan dari kelas DateTime pada PHP. Paket ini dapat membantu kita dalam mengoperasikan tanggal dan waktu untuk dalam aplikasi PHP.
Teman-teman dapat melihat manfaat dan dokumentasi paket ini:
Dokumentasi http://carbon.nesbot.com/docs
Source code https://github.com/briannesbitt/Carbon
Packagist https://packagist.org/packages/nesbot/carbon
Sebelum kembali bahas composer require
, sedikit gambaran tentang sebuah paket atau library pada Composer/Packagist.
Setiap nama paket memiliki format nama-vendor/nama-paket
, kalau diibaratkan sebuah buku, formatnya serupa pengarang/nama-buku
Nah, jadi pada paket yang barusan kita gunakan nesbot/carbon
, nesbot
adalah nama atau alias si pembuat atau vendornya, sedangkan carbon
adalah nama paketnya.
Ok kembali bahas perintah composer require
. Jadi kalau kita jalankan, maka tampilannya akan seperti ini:
Tahap prosesnya kira-kira seperti ini:
- Ketika kita mengetikkan
composer require nesbot/carbon 1.20.0
dan tekan enter,- Composer membuat file
composer.json
- Composer membaca detail paket yang bersangkutan pada packagist dan melihat dependecy paket tersebut
- pada tahap ini, Composer juga membaca spesifikasi PHP pada PC kita
- Composer membuat file
- Composer menginstall/men-download paket-paket dependency
- paket-paket dependecy akan di-download terlebih dahulu
- paket yang kita
“require”
akan di-download setelah dependecynya selesai di-download
- Composer membuat file
composer.lock
dan file-fileautoload.php
yang akan me-load kelas-kelas yang ada di seluruh paket.
Bisa kita lihat pada gambar tersebut, untuk menginstall paket nesbot/carbon
ternyata ada dua paket lain yang di-download oleh Composer.
Mengapa ada dua paket tambahan? Dari mana asalnya kedua paket tersebut?
Kalau kita lihat di https://packagist.org/packages/nesbot/carbon, ternyata dia memiliki 1 dependensi paket, yaitu symfony/translation
Lalu satu paket lagi dari mana? oke kita lihat di packagist symfony/translation, paket ini memiliki satu dependency paket lain, yaitu symfony/polyfill-mbstring
Oke, kita coba lihat lagi apakah paket symfony/polyfill-mbstring
punya dependency lagi? kita lihat di packagist symfony/translation
Pada gambar di atas symfony/polyfill-mbstring
tidak memiliki dependency ke paket lain.
Nah, ini rupanya cocok dengan pembahasan kita pada artikel perkenalan Composer, di mana sebuah paket bisa memiliki dependency, dan dependency-nya juga punya dependency. Begitu seterusnya.
Oke sampai disini kita mengerti dua hal:
- Perintah
composer require
, kita meminta Composer untuk menginstall/men-download sebuah paket agar menjadi dependency project/aplikasi kita. - Sesuai dengan analogi yang kita pahami bersama pada materi pada perkenalan dengan Composer, bahwa Composer terbukti memang benar “Dependency Manager” sehingga untuk dapat menggunakan satu paket/library, kita tidak perlu repot-repot men-download paket dan depedencynya secara manual.
Dan sedikit kita mengingat materi pada cara kerja Composer, bahwa :
Seluruh paket yang diinstall oleh Composer akan “menghuni” folder bernama
“vendor”
Ya, semua paket yang di-download oleh Composer akan diletakkan dalam folder “vendor”
, kita akan bahas tentang folder vendor pada artikel lainnya.
Selanjutnya kita akan membahas tentang perintah berikutnya, yaitu composer create-project.