搜尋
首頁開發工具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刪除
作曲家和AI:PHP開發中的新可能性作曲家和AI:PHP開發中的新可能性Apr 19, 2025 am 12:03 AM

AI與Composer結合可提升PHP開發效率和安全性。具體體現在:1.依賴解析和優化:AI可預測依賴關係,減少衝突。 2.自動化安全檢查:AI能識別安全漏洞,建議更新。 3.代碼生成和優化:AI能自動生成和優化相關代碼。

使用DICR/YII2-Google將Google API集成在YII2中使用DICR/YII2-Google將Google API集成在YII2中Apr 18, 2025 am 11:54 AM

vProcesserazrabotkiveb被固定,мнелостольностьстьс粹餾標д都LeavallySumballanceFriablanceFaumDoptoMatification,Čtookazalovnetakprosto,kakaožidal.posenesko

如何使用 Composer 解決 JSON Schema 驗證問題如何使用 Composer 解決 JSON Schema 驗證問題Apr 18, 2025 am 11:51 AM

在開發一個基於Symfony的應用程序時,我遇到了一個棘手的問題:如何有效地驗證JSON數據格式。最初,我嘗試使用手動編寫的驗證代碼,但這不僅複雜,而且容易出錯。經過一番探索,我發現了一個名為ptyhard/json-schema-bundle的Composer包,它為我的項目帶來了極大的便利和效率。

使用 Composer 解決推薦系統的困境:andres-montanez/recommendations-bundle 的實踐使用 Composer 解決推薦系統的困境:andres-montanez/recommendations-bundle 的實踐Apr 18, 2025 am 11:48 AM

在開發一個電商網站時,我遇到了一個棘手的問題:如何為用戶提供個性化的商品推薦。最初,我嘗試了一些簡單的推薦算法,但效果並不理想,用戶的滿意度也因此受到影響。為了提升推薦系統的精度和效率,我決定採用更專業的解決方案。最終,我通過Composer安裝了andres-montanez/recommendations-bundle,這不僅解決了我的問題,還大大提升了推薦系統的性能。可以通過一下地址學習composer:學習地址

如何使用 Composer 快速搭建 Fecmall 高級項目模板如何使用 Composer 快速搭建 Fecmall 高級項目模板Apr 18, 2025 am 11:45 AM

在開發電商平台時,選擇合適的框架和工具至關重要。最近我在嘗試構建一個功能豐富的電商網站時,遇到了一個棘手的問題:如何快速搭建一個可擴展且功能完善的電商平台。我嘗試了多種解決方案,最終選擇了Fecmall的高級項目模板(fecmall/fbbcbase-app-advanced)。通過使用Composer,這個過程變得非常簡單和高效。可以通過以下地址學習Composer:學習地址

提升 Doctrine 實體序列化效率:sidus/doctrine-serializer-bundle 的應用提升 Doctrine 實體序列化效率:sidus/doctrine-serializer-bundle 的應用Apr 18, 2025 am 11:42 AM

在处理一个包含大量Doctrine实体的项目时,我遇到了一个棘手的问题:每次序列化和反序列化实体时,性能变得非常低效,导致系统响应时间显著增加。我尝试了多种优化方法,但效果不佳。幸运的是,通过使用sidus/doctrine-serializer-bundle,我成功地解决了这个问题,显著提升了项目的性能。

使用 Composer 解決 Laravel 項目中的錯誤日誌問題使用 Composer 解決 Laravel 項目中的錯誤日誌問題Apr 18, 2025 am 11:39 AM

在開發Laravel項目時,錯誤日誌的管理是一個非常關鍵的環節。最近,我在項目中遇到了一個問題:如何高效地捕獲和記錄所有類型的錯誤,並確保這些錯誤信息能被及時處理。經過一番研究,我找到了lukeboy25/errorlogger這個包,它通過Composer安裝,能夠極大地簡化錯誤日誌的管理過程。可以通過一下地址學習composer:學習地址

如何使用 Composer 提升 Laravel 應用的安全性:wiebenieuwenhuis/laravel-2fa 庫的應用如何使用 Composer 提升 Laravel 應用的安全性:wiebenieuwenhuis/laravel-2fa 庫的應用Apr 18, 2025 am 11:36 AM

在開發一個Laravel應用時,我遇到了一個常見但棘手的問題:如何提升用戶賬戶的安全性。隨著網絡攻擊的日益複雜,單一的密碼保護已經不足以保障用戶的數據安全。我嘗試了幾種方法,但效果都不盡如人意。最終,我通過Composer安裝了wiebenieuwenhuis/laravel-2fa庫,成功地為我的應用添加了雙因素認證(2FA),大大提升了安全性。

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脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境