搜尋
首頁開發工具composer使用replace屬性來避免Composer的依賴衝突

Composer 文件提供了兩個基本的範例。我將嘗試解釋:列出被該軟體包替換的軟體包。這樣,你就可以 fork 一個包,並使用自己的版本號以不同的名稱發布,而需要原始包的軟體包可以繼續使用你的 fork 包,因為它會替換原始包。


假設你的軟體使用

original/library

other/package

,它們本身也需要
original/library

現在你認為 original/library 需要整合新功能,但是維護人員不同意你的建議在他們的軟體包中實現。所以你決定以  better/library 的名稱衍生出該函式庫,並標記一個新發行版。

回到軟體。當然,它應該開始使用 better/library 套件,所以要用它來代替,但 other/package 仍然需要

original/library

 - 程式碼重複!如何讓那個套件使用你的 better/library 來取代 original/library?而不需要對它進行 fork ,只需要修改 composer.json(你仍然與 original/library 相容,所以它應該可以工作了)? 你需要增加replace 關鍵字在 composer.json<pre class="brush:php;toolbar:false">&quot;replace&quot;: {     &quot;original/library&quot;:&quot;1.0.2&quot; }</pre>現在Composer 知道,在解決「other/package」的依賴關係時,任何來自「better /library」的包包都跟「original/library」一樣好。

這對包含子套件的套件也很有用,例如,主 symfony/symfony 套件包含所有 Symfony 元件,這些元件也可以作為單獨的套件使用。如果您需要主包,它將自動滿足單個組件之一的要求,因為它將替換它們。

相同的規則,只是角度略有不同:對於需要某些功能的任何其他元件,引入框架的元件是一種不錯的方法。但是,如果你在軟體中需要完整的框架,而另一個庫又需要該框架的元件,則該框架的

replace
 聲明使Composer 不必兩次安裝該單一元件,因為它已經包含在完整的框架中。

注意: 替換版本中的佔位符通常是不好的

#在我最初的回答中,我建議:

"replace": {
    "original/library":"1.*"
}

這帶來的後果是:Composer現在將把你的庫版本1.0.0 和原來庫的任何版本1.x 一樣好,即使他們在某一天修復了一些東西或添加了一些特性並發布了版本1.2.34 。這也意味著,如果某一天你的「other/package」得到更新,並且需要「original/library:^1.1」,庫中的替換仍處於活動狀態,並聲明它可以替換任何版本

1*

,,即使你不更新內部的任何內容-這樣做也無法完成,但是如果你不做任何工作,你的舊代碼就永遠不會實現原始庫的新功能,但替換內容恰恰說明了這一點。

因此,從本質上:在替換版本中避免使用通配符版本!如果使用它們,則會對你無法了解或預測的未來做出聲明(除非你可以控制 original/library ,但即使這樣也要非常小心)。一定要使用你知道的並且可以完全重新實現的 original/library

原文網址:https://stackoverflow.com/questions/18882201/how-does-the-replace-property-work-with-composer#翻譯網址:https: //learnku.com/laravel/t/55200

#

以上是使用replace屬性來避免Composer的依賴衝突的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:learnku。如有侵權,請聯絡admin@php.cn刪除
作曲家:PHP軟件包管理的綜合指南作曲家:PHP軟件包管理的綜合指南May 11, 2025 am 12:17 AM

Composer是一個PHP依賴管理工具,通過composer.json文件管理項目依賴。 1.初始化項目使用composerinit。 2.添加依賴如composerrequireguzzlehttp/guzzle。 3.高級用法包括配置私有倉庫和使用腳本鉤子。 4.常見錯誤如依賴衝突可通過composerwhy-not命令調試。 5.性能優化建議使用composerinstall--prefer-dist和定期更新依賴。

作曲家在行動中:自動化依賴性分辨率作曲家在行動中:自動化依賴性分辨率May 10, 2025 am 12:22 AM

Composer通過自動化依賴解析簡化了PHP項目的依賴管理。 1)讀取composer.json解析依賴需求;2)構建依賴樹處理版本衝突;3)從Packagist下載並安裝依賴到vendor目錄;4)生成composer.lock確保依賴一致性,從而提升開發效率。

AI和作曲家:增強代碼質量和開發AI和作曲家:增強代碼質量和開發May 09, 2025 am 12:20 AM

AI在Composer中主要通過依賴推薦、依賴衝突解決和代碼質量提升來提高開發效率和代碼質量。 1.AI可以根據項目需求推薦合適的依賴包。 2.AI提供智能解決方案來處理依賴衝突。 3.AI審查代碼並提供優化建議,提升代碼質量。通過這些功能,開發者可以更專注於業務邏輯的實現。

什麼定義了作曲家:了解角色什麼定義了作曲家:了解角色May 08, 2025 am 12:07 AM

作曲家是通過創作音樂作品來表達情感、講述故事或表達思想的人,他們的角色包括構思音樂結構、選擇樂器組合和與其他音樂家合作。 1)作曲家在創作過程中會經歷構思、創作、修改和完善四個階段;2)他們需要掌握音樂理論,如和聲、對位和旋律,以確保作品的質量和效果。

作曲家:安裝,更新和管理依賴項作曲家:安裝,更新和管理依賴項May 07, 2025 am 12:07 AM

Composer是PHP的依賴管理工具,通過composer.json和composer.lock文件管理項目依賴。 1.安裝Composer:運行特定命令並移動composer.phar到系統路徑。 2.更新Composer:使用composerself-update命令。 3.依賴管理:通過composerrequire命令添加依賴,自動更新相關文件並下載包。

AI驅動的作曲家:代碼生成和分析AI驅動的作曲家:代碼生成和分析May 06, 2025 am 12:11 AM

AI在代碼生成和分析中發揮重要作用:1)通過機器學習和NLP生成代碼,如GitHub的Copilot;2)進行代碼分析,識別bug和優化建議,如SonarQube;3)提高開發效率和代碼質量,但需人工審查和優化。

作曲家:AI驅動的工具和集成作曲家:AI驅動的工具和集成May 05, 2025 am 12:11 AM

Composer本身不包含AI功能,但可以通過AI工具增強其能力。 1)AI可以分析composer.json文件,建議優化依賴項和預測版本衝突。 2)AI驅動的平台如GitHubCopilot可提供實時代碼建議,提升開發效率。使用AI工具時需結合實際情況進行驗證和調整。

成功作曲家的屬性成功作曲家的屬性May 04, 2025 am 12:13 AM

成功作曲家的關鍵特質包括:1)豐富的創意與想像力,2)紮實的技術技能與工具掌握。這些特質與編程中的創造性和結構化思維相似,幫助作曲家在音樂創作中實現創意並優化作品。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

北端:融合系統,解釋
1 個月前By尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
4 週前By尊渡假赌尊渡假赌尊渡假赌
<🎜>掩蓋:探險33-如何獲得完美的色度催化劑
2 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。