首頁  >  文章  >  開發工具  >  謹慎使用composer update!

謹慎使用composer update!

藏色散人
藏色散人轉載
2020-07-13 13:28:106579瀏覽

下面由composer教學專欄為大家介紹謹慎使用composer update的問題,希望對需要的朋友有幫助!

謹慎使用composer update!

#問題說明

#我們常常要往現有的專案中加入擴充包,有時候因為文檔的錯誤引導,如下圖來自這個文檔的:

謹慎使用composer update!

#composer update 這個命令在我們現在的邏輯中,可能會對項目造成巨大傷害。

因為composer update 的邏輯是按照composer.json 指定的擴充包版本規則,把所有擴充包更新到最新版本,注意,是所有擴充包,舉個例子,你在專案一開始的時候使用了monolog,當時的設定資訊是

"monolog/monolog": "1.*",

安裝的是monolog 1.1 版本,而一個多月以後的現在,monolog 已經是1.2 了,執行指令後直接更新到1.2,這時專案並沒有針對1.2 進行過測試,項目一下子變得很不穩定,情況有時會比這個更糟糕,尤其是在一個龐大的項目中,你沒有對項目寫完整覆蓋測試的情況,什麼東西壞掉了你都不知道。

那應該使用哪個指令呢? install, update 還是 require ?

接下來我們一一解釋。

簡單解釋

composer install - 如有 composer.lock 文件,直接安装,否则从 composer.json 安装最新扩展包和依赖;
composer update - 从 composer.json 安装最新扩展包和依赖;
composer update vendor/package - 从 composer.json 或者对应包的配置,并更新到最新;
composer require new/package - 添加安装 new/package, 可以指定版本,如: composer require new/package ~2.5.

#流程

就下來介紹幾個日常生產的流程,來方便加深大家的理解。

流程一:新專案流程 
建立composer.json,並新增依賴的擴充包; 
執行composer install,安裝擴充包並產生composer.lock; 
提交composer. lock 到程式碼版本控制器中,如:git;

流程二:專案合作者安裝現有專案 
複製專案後,根目錄下直接執行composer install 從composer.lock 安裝指定版本的擴充包以及其依賴;

此流程適用於生產環境程式碼的部署。

流程三:為專案新增擴充套件

使用composer require vendor/package 新增擴充套件; 
提交更新後的composer.json 和composer.lock 到程式碼版本控制器中,如:git;

關於composer.lock 檔案

composer.lock 檔案裡保存著對每一個程式碼依賴的版本記錄(見下圖),提交到版本控制器中,並配合composer install 使用,保證了團隊所有協作者開發環境、線上生產環境中運行的程式碼版本的一致性。

謹慎使用composer update!

关于扩展包的安装方法

那么,准备添加一个扩展包,install, update, require 三个命令都可以用来安装扩展包,选择哪一个才是正确的呢?

答案是:使用 composer require 命令

另外,在手动修改 composer.json 添加扩展包后,composer update new/package 进行指定扩展包更新的方式,也可以正确的安装,不过不建议使用这种方法,因为,一旦你忘记敲定后面的扩展包名,就会进入万劫不复的状态,别给自己留坑呀。

上面的概念不论对新手或者老手来说,都比较混淆,主要记住这个概念:

原有项目新添加扩展的,都使用 composer require new/package 这种方式来安装。

需要加版本的话

composer require "foo/bar:1.0.0"

更新指定扩展到指定版本

有时候你之前使用过的扩展包,加入了新功能,你想更新单独这个扩展包到指定版本,也可以使用 require 来操作。

如下面例子,需要更新 “sami/sami”: “3.0.” 到 “sami/sami”: “3.2.” 
謹慎使用composer update!

命令行运行: 
謹慎使用composer update! 

以上是謹慎使用composer update!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除