Sự khác biệt giữa composer updatevà là composer installgì?
Sự khác biệt giữa composer updatevà là composer installgì?
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.1phiên bản của gói, việc chạy composer updatesẽ gây ra sự nâng cấp của gói này (ví dụ: 0.9.2nếu nó đã được phát hành)
chi tiết composer updatesẽ:
composer.jsoncomposer.jsoncomposer.lockđể lưu trữ phiên bản gói đã cài đặtcài đặt nhà soạn nhạc
composer installsẽ 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.locktệp
Chi tiết:
composer.locktập tin tồn tại (nếu không, chạy composer-updatevà tạo nó)composer.locktập tincomposer.locktệpKhi nào cần cài đặt và khi nào cần cập nhật
composer updatePhầ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.jsontệ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 updatecậ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_HOMEbiến env)
composer updatetrê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 installnó 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 updatenó 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 installcomposer.lockkhông tồn tại.
composer.locktệp.composer.lockkhông không tồn tại.
composer.json.composer.locktập tin dựa trên các gói đã cài đặt.Theo composer help install::
Lệnh install đọc
composer.locktệ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.jsonvà làm tương tự.
composer updatecomposer.jsontệp (cài đặt, cập nhật và xóa).composer.locktệp theo các thay đổi.Theo composer help update::
Lệnh cập nhật đọc
composer.jsontệ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 updatevà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.lockvà 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 installtrong 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.jsonnhư vậy "monolog/monolog": "1.0.1"?
Chúng tôi vẫn cần composer.lockvì composer.jsonchỉ 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.lockngay 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.