Apa perbedaannya composer update dan composer install?
Apa perbedaannya composer update dan composer install?
Jawaban:
pembaruan komposer
composer update akan memperbarui dependensi Anda sebagaimana ditentukan dalam composer.json
Misalnya, jika Anda memerlukan paket ini sebagai ketergantungan:
"mockery/mockery": "0.9.*",
dan Anda telah menginstal 0.9.1versi paket, menjalankan composer updateakan menyebabkan peningkatan paket ini (misalnya 0.9.2, jika sudah dirilis)
secara rinci composer updateakan:
composer.jsoncomposer.jsoncomposer.lockuntuk menyimpan versi paket yang diinstalpemasangan komposer
composer installtidak akan memperbarui apa pun; itu hanya akan menginstal semua dependensi seperti yang ditentukan dalam composer.lockfile
Secara terperinci:
composer.lockfile ada (jika tidak, jalankan composer-updatedan buat itu)composer.lockfilecomposer.lockfileKapan menginstal dan kapan memperbarui
composer updatesebagian besar digunakan dalam 'tahap pengembangan', untuk meningkatkan paket proyek kami sesuai dengan apa yang telah kami tentukan dalam composer.jsonfile,
composer install terutama digunakan dalam 'tahap penggelaran' untuk menginstal aplikasi kami pada server produksi atau pada lingkungan pengujian, menggunakan dependensi yang sama yang disimpan dalam file composer.lock yang dibuat oleh pembaruan komposer.
composer global updatememperbarui dependensi dalam repositori global Anda pada sistem lokal ( COMPOSER_HOMEvariabel env)
composer updatepada sistem lokal Anda dan menguji aplikasi Anda, kemudian mengunggah komposer. Buka server produksi Anda dan jalankancomposer install
Ketika Anda menjalankannya composer installakan mencari file kunci dan menginstal apa pun yang terkandung di dalamnya, jika tidak dapat menemukannya, ia akan membacacomposer.json , menginstal dependensi dan menghasilkan file kunci.
Ketika Anda menjalankannya composer updatecukup membaca composer.json, instal dependensi dan perbarui lockfile (atau buat lockfile baru).
composer installcomposer.lockmemang ada.
composer.lockfile.composer.locktidak tidak ada.
composer.json.composer.lockfile berdasarkan paket yang diinstal.Sesuai composer help install::
Perintah install membaca
composer.lockfile dari direktori saat ini, memprosesnya, dan mengunduh serta menginstal semua pustaka dan dependensi yang diuraikan dalam file itu. Jika file tidak ada, ia akan mencaricomposer.jsondan melakukan hal yang sama.
composer updatecomposer.json file (menginstal, memperbarui, dan menghapus).composer.lockfile sesuai dengan perubahan.Sesuai composer help update::
Perintah pembaruan membaca
composer.jsonfile dari direktori saat ini, memprosesnya, dan memperbarui, menghapus atau menginstal semua dependensi.
Lihat juga: Komposer: Ini Semua Tentang File Kunci
Perbedaan terbaik antara composer updatedancomposer install
pemasangan komposer
Untuk menambahkan dependensi, Anda perlu menambahkannya secara manual ke file composer.json.
Jika file composer.lock ada, instal persis apa yang dikhususkan pada file ini
Tidak ada komponen yang akan diperbarui dengan perintah ini.
pembaruan komposer
Untuk menambah atau menghapus dependensi, Anda perlu menambahkannya secara manual ke file composer.json
Jika Anda tidak dapat (atau tidak tahu cara menambah atau menghapus pustaka yang sebenarnya mudah, cukup tambahkan nama dependensi dan versi di properti yang memerlukan file) ubah file composer.json secara manual atau Anda lebih suka menggunakan baris perintah sebagai gantinya, komposer memiliki fungsi khusus untuk ini:
komposer membutuhkan
Sebagai contoh jika kita ingin menambahkan ketergantungan dengan baris perintah, kita cukup menjalankannya
composer require twig/twig
komposer hapus
Jika Anda ingin menghapus ketergantungan yang tidak digunakan, kami hanya akan menjalankan:
composer remove twig/twig --update-with-dependencies
if(composer.lock existed){
installs dependency with EXACT version in composer.lock file
} else {
installs dependency with LATEST version in composer.json
generate the composer.lock file
}
composer update = remove composer.lock -> composer install
Kenapa kita perlu 2 perintah. Saya pikir itu bisa dijelaskan oleh composer.lock.
Bayangkan, kita TIDAK punya composer.lockdan dalam composer.json, ada ketergantungan "monolog/monolog": "1.0.*"atau "monolog/monolog": "^1.0".
Kemudian, ia akan memiliki beberapa kasus
composer installdalam waktu yang berbeda.Bagaimana jika kita selalu menggunakan versi EXACT di composer.jsonseperti "monolog/monolog": "1.0.1"?
Kami masih membutuhkannya composer.lockkarenacomposer.json hanya melacak versi utama ketergantungan Anda, itu tidak dapat melacak versi dependensi ketergantungan.
Bagaimana jika semua dependensi dependensi juga menggunakan versi EXACT?
Bayangkan Anda mulai dengan SEMUA dependensi yang menggunakan versi EXACT maka Anda tidak peduli composer.lock. Namun, beberapa bulan kemudian, Anda menambahkan dependensi baru (atau memperbarui dependensi lama), dan dependensi dependensi ini tidak menggunakan versi EXACT. Maka lebih baik peduli composer.lockpada awalnya.
Selain itu, ada keuntungan dari versi semantik daripada versi yang tepat. Kami dapat memperbarui ketergantungan berkali-kali selama pengembangan dan perpustakaan sering memiliki beberapa perubahan kecil seperti perbaikan bug. Maka lebih mudah untuk meningkatkan ketergantungan yang menggunakan versi semantik.