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.1
versi paket, menjalankan composer update
akan menyebabkan peningkatan paket ini (misalnya 0.9.2
, jika sudah dirilis)
secara rinci composer update
akan:
composer.json
composer.json
composer.lock
untuk menyimpan versi paket yang diinstalpemasangan komposer
composer install
tidak akan memperbarui apa pun; itu hanya akan menginstal semua dependensi seperti yang ditentukan dalam composer.lock
file
Secara terperinci:
composer.lock
file ada (jika tidak, jalankan composer-update
dan buat itu)composer.lock
filecomposer.lock
fileKapan menginstal dan kapan memperbarui
composer update
sebagian besar digunakan dalam 'tahap pengembangan', untuk meningkatkan paket proyek kami sesuai dengan apa yang telah kami tentukan dalam composer.json
file,
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 update
memperbarui dependensi dalam repositori global Anda pada sistem lokal ( COMPOSER_HOME
variabel env)
composer update
pada sistem lokal Anda dan menguji aplikasi Anda, kemudian mengunggah komposer. Buka server produksi Anda dan jalankancomposer install
Ketika Anda menjalankannya composer install
akan 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 update
cukup membaca composer.json
, instal dependensi dan perbarui lockfile (atau buat lockfile baru).
composer install
composer.lock
memang ada.
composer.lock
file.composer.lock
tidak tidak ada.
composer.json
.composer.lock
file berdasarkan paket yang diinstal.Sesuai composer help install
::
Perintah install membaca
composer.lock
file 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.json
dan melakukan hal yang sama.
composer update
composer.json
file (menginstal, memperbarui, dan menghapus).composer.lock
file sesuai dengan perubahan.Sesuai composer help update
::
Perintah pembaruan membaca
composer.json
file dari direktori saat ini, memprosesnya, dan memperbarui, menghapus atau menginstal semua dependensi.
Lihat juga: Komposer: Ini Semua Tentang File Kunci
Perbedaan terbaik antara composer update
dancomposer 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.lock
dan dalam composer.json
, ada ketergantungan "monolog/monolog": "1.0.*"
atau "monolog/monolog": "^1.0"
.
Kemudian, ia akan memiliki beberapa kasus
composer install
dalam waktu yang berbeda.Bagaimana jika kita selalu menggunakan versi EXACT di composer.json
seperti "monolog/monolog": "1.0.1"
?
Kami masih membutuhkannya composer.lock
karenacomposer.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.lock
pada 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.