Sự khác biệt giữa composer update
và là composer install
gì?
Sự khác biệt giữa composer update
và là composer install
gì?
Câu trả lời:
cập nhật nhà soạn nhạc
composer update
sẽ cập nhật số tiền của bạn khi chúng được chỉ định trong composer.json
Ví dụ: nếu bạn yêu cầu gói này làm phụ thuộc:
"mockery/mockery": "0.9.*",
và bạn đã thực sự cài đặt 0.9.1
phiên bản của gói, việc chạy composer update
sẽ gây ra sự nâng cấp của gói này (ví dụ: 0.9.2
nếu nó đã được phát hành)
chi tiết composer update
sẽ:
composer.json
composer.json
composer.lock
để lưu trữ phiên bản gói đã cài đặtcài đặt nhà soạn nhạc
composer install
sẽ không cập nhật bất cứ điều gì; nó sẽ chỉ cài đặt tất cả các phụ thuộc như được chỉ định trong composer.lock
tệp
Chi tiết:
composer.lock
tập tin tồn tại (nếu không, chạy composer-update
và tạo nó)composer.lock
tập tincomposer.lock
tệpKhi nào cần cài đặt và khi nào cần cập nhật
composer update
Phần lớn được sử dụng trong 'giai đoạn phát triển', để nâng cấp các gói dự án của chúng tôi theo những gì chúng tôi đã chỉ định trong composer.json
tệp,
composer install
chủ yếu được sử dụng trong 'giai đoạn triển khai' để cài đặt ứng dụng của chúng tôi trên máy chủ sản xuất hoặc trên môi trường thử nghiệm, sử dụng cùng các phụ thuộc được lưu trữ trong tệp composer.lock được tạo bởi cập nhật của nhà soạn nhạc.
composer global update
cập nhật các phụ thuộc trong kho lưu trữ toàn cầu của bạn trên hệ thống cục bộ ( COMPOSER_HOME
biến env)
composer update
trên hệ thống cục bộ của mình và kiểm tra ứng dụng của bạn, sau đó tải lên trình soạn thảo.lock trên máy chủ sản xuất của bạn và chạycomposer install
Khi bạn chạy, composer install
nó sẽ tìm tệp khóa và cài đặt bất cứ thứ gì có trong đó, nếu không tìm thấy, nó sẽ đọc composer.json
, cài đặt các phụ thuộc của nó và tạo tệp khóa .
Khi bạn chạy composer update
nó chỉ cần đọc composer.json
, cài đặt các phụ thuộc và cập nhật tệp khóa (hoặc tạo tệp khóa mới).
composer install
composer.lock
không tồn tại.
composer.lock
tệp.composer.lock
không không tồn tại.
composer.json
.composer.lock
tập tin dựa trên các gói đã cài đặt.Theo composer help install
::
Lệnh install đọc
composer.lock
tệp từ thư mục hiện tại, xử lý nó, tải xuống và cài đặt tất cả các thư viện và phụ thuộc được nêu trong tệp đó. Nếu tập tin không tồn tại, nó sẽ tìmcomposer.json
và làm tương tự.
composer update
composer.json
tệp (cài đặt, cập nhật và xóa).composer.lock
tệp theo các thay đổi.Theo composer help update
::
Lệnh cập nhật đọc
composer.json
tệp từ thư mục hiện tại, xử lý tệp đó và cập nhật, xóa hoặc cài đặt tất cả các phụ thuộc.
Xem thêm: Trình soạn thảo: Đó là tất cả về tệp khóa
Sự khác biệt tốt nhất giữa composer update
vàcomposer install
cài đặt nhà soạn nhạc
Để thêm các phụ thuộc, bạn cần thêm thủ công vào tệp composer.json.
Nếu tệp composer.lock tồn tại, hãy cài đặt chính xác những gì được chỉ định trên tệp này
Không phải bất kỳ thành phần sẽ được cập nhật với lệnh này.
cập nhật nhà soạn nhạc
Để thêm hoặc xóa phụ thuộc, bạn cần thêm thủ công vào tệp composer.json
Nếu bạn không thể (hoặc không biết cách thêm hoặc xóa thư viện thực sự dễ dàng, chỉ cần thêm tên của phụ thuộc và phiên bản trong thuộc tính yêu cầu của tệp) sửa đổi tệp composer.json theo cách thủ công hoặc bạn thay vào đó, hãy sử dụng dòng lệnh, trình soạn thảo có các chức năng đặc biệt cho việc này:
nhà soạn nhạc yêu cầu
Ví dụ: nếu chúng ta muốn thêm một phụ thuộc với dòng lệnh, chúng ta sẽ thực hiện đơn giản
composer require twig/twig
nhà soạn nhạc loại bỏ
Nếu bạn muốn loại bỏ một phụ thuộc không sử dụng, chúng tôi sẽ thực hiện đơn giản:
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
Tại sao chúng ta cần 2 lệnh. Tôi nghĩ rằng nó có thể giải thích bởi composer.lock.
Hãy tưởng tượng, chúng ta KHÔNG có composer.lock
và trong composer.json
, có một sự phụ thuộc "monolog/monolog": "1.0.*"
hay "monolog/monolog": "^1.0"
.
Sau đó, nó sẽ có một số trường hợp
composer install
trong thời gian khác.Điều gì xảy ra nếu chúng ta luôn sử dụng một phiên bản CHÍNH XÁC composer.json
như vậy "monolog/monolog": "1.0.1"
?
Chúng tôi vẫn cần composer.lock
vì composer.json
chỉ theo dõi phiên bản chính của sự phụ thuộc của bạn, nó không thể theo dõi phiên bản phụ thuộc của phụ thuộc.
Điều gì xảy ra nếu tất cả các phụ thuộc của phụ thuộc cũng sử dụng phiên bản CHÍNH XÁC?
Hãy tưởng tượng bạn bắt đầu với TẤT CẢ các phụ thuộc sử dụng phiên bản CHÍNH XÁC sau đó bạn không quan tâm composer.lock
. Tuy nhiên, một vài tháng sau, bạn thêm một phụ thuộc mới (hoặc cập nhật phụ thuộc cũ) và các phụ thuộc của phụ thuộc này không sử dụng phiên bản CHÍNH XÁC. Sau đó, tốt hơn là quan tâm composer.lock
ngay từ đầu.
Bên cạnh đó, có một lợi thế của phiên bản ngữ nghĩa so với phiên bản chính xác. Chúng tôi có thể cập nhật sự phụ thuộc nhiều lần trong quá trình phát triển và thư viện thường có một số thay đổi nhỏ như sửa lỗi. Sau đó, dễ dàng hơn để nâng cấp phụ thuộc sử dụng phiên bản ngữ nghĩa.