溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

composer中install和update有哪些區(qū)別

發(fā)布時(shí)間:2020-12-10 11:34:12 來(lái)源:億速云 閱讀:281 作者:小新 欄目:軟件技術(shù)

小編給大家分享一下composer中install和update有哪些區(qū)別,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

然而,對(duì)于如何『安裝他們』,新手可能并不清楚。

網(wǎng)上的答案有的說(shuō) composer install,有的說(shuō)composer update,而這兩者似乎都能成功把依賴下載下來(lái)并安裝好,那么他們究竟有何區(qū)別呢?

相關(guān)

首先要搞清楚的一件事情是,所有的依賴都定義在composer.json中,手冊(cè)中給出了一些基本用法和例子。你可能已經(jīng)注意到,在指定版本號(hào)的時(shí)候,我們并不一定要指明一個(gè)精確的版本。那么就有可能發(fā)生這么一個(gè)情況,對(duì)于同一份composer.json,我們?cè)诓煌瑫r(shí)刻拉取到的依賴文件可能不同(因?yàn)閏omposer會(huì)在滿足條件的情況下去拉取最新的那份依賴),從而導(dǎo)致一些異常情況。

composer update和composer install正是為了解決這個(gè)問(wèn)題而出現(xiàn)的。

當(dāng)你執(zhí)行composer update的時(shí)候,composer會(huì)去讀取composer.json中指定的依賴,去分析他們,并且去拉取符合條件最新版本的依賴。然后他會(huì)把所拉取到的依賴放入vendor目錄下,并且把所有拉取的依賴的精確版本號(hào)寫(xiě)入composer.lock文件中。

composer install所執(zhí)行的事情非常類似,只在第一步的時(shí)候有差別。當(dāng)你本地如果已經(jīng)存在一份composer.lock時(shí),它將會(huì)去讀取你的composer.lock而非composer.json,并且以此為標(biāo)準(zhǔn)去下載依賴。當(dāng)你本地沒(méi)有composer.lock的時(shí)候,它所做的事情和composer update其實(shí)并沒(méi)有區(qū)別。

這意味著,只要你本地有一份composer.lock,你就可以保證無(wú)論過(guò)去了多久,你都能拉到相同的依賴。而如果你把它納入你的項(xiàng)目的版本控制中,那么你就可以確保你項(xiàng)目中的每一個(gè)人、每一臺(tái)電腦,不管什么系統(tǒng),都能拉取到一模一樣的依賴,以減少潛在的依賴對(duì)部署的影響。當(dāng)然,請(qǐng)記得,你應(yīng)該使用的命令是composer install。

那什么時(shí)候該使用composer update呢?當(dāng)你修改了你的依賴關(guān)系,不管是新增了依賴,還是修改了依賴的版本,又或者是刪除了依賴,這時(shí)候如果你執(zhí)行composer install的時(shí)候,是不會(huì)有任何變更的,但你會(huì)得到一個(gè)警告信息

Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. Run update to update them.

有人可能會(huì)很好奇php是怎么知道我修改了依賴,或者composer.lock已經(jīng)過(guò)期了。很簡(jiǎn)單,如果你打開(kāi)composer.lock的話,會(huì)發(fā)現(xiàn)其中有一個(gè)hash字段,這就是當(dāng)時(shí)對(duì)應(yīng)的那份依賴的哈希值。如果值不一致自然而然就知道發(fā)生了變更了。

這時(shí)候,你應(yīng)該去通過(guò)composer update來(lái)更新下你的依賴了。

如果你不希望影響別的已經(jīng)安裝的依賴,僅僅更新你修改的部分,那你可以通過(guò)指定白名單來(lái)確定要更新的范圍,例如composer update monolog/monolog僅會(huì)更新monolog/monlog這個(gè)依賴,別的依賴哪怕有更新也會(huì)被忽略。

以上是“composer中install和update有哪些區(qū)別”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI