封裝修補
概觀
有時您需要對相依性進行一些小更動,只是為了解決一些小問題。建議的動作是提出上游 PR,但可能需要一些時間,直到您的更動通過審查並結束於一個版本;這段期間該怎麼辦?您有兩個選項
-
您可以使用
git:
協定,它會讓您直接從其開發存放庫安裝專案,只要它已正確設定。 -
或者,您可以使用
patch:
協定,直接從您的專案對相依性進行小更動,同時讓它們與原始程式碼分開。
不再需要等待合併和發布拉取請求,不再需要分岔存放庫,只為了修正那個阻止您的應用程式運作的小問題:內建的修補機制將永遠讓您解除封鎖。
建立修補程式
若要建立修補程式,請執行 yarn patch
指令,並傳遞封裝名稱給 Yarn,讓 Yarn 將所要求的封裝解壓縮到暫存資料夾中。接著,您可以自由編輯修補程式中的檔案。
完成更動後,執行 yarn patch-commit -s
,並將暫存資料夾作為參數:修補程式將產生於 .yarn/patches
中,並套用於您的專案。將其加入 Git,您就可以開始進行了。
維護修補程式
預設情況下,yarn patch
將始終重設修補程式。如果您希望新增變更,請使用 --update
標記並遵循與之前相同的程序 - 您的修補程式將會重新產生。
限制
-
因為它們目前是在擷取時間而非解析時間計算,所以套件相依性已經解析,而且修補程式將無法變更它們。請改用
packageExtensions
機制,它專門用於新增新的執行時期相依性到套件。 -
修補程式不適合修改二進位檔案。縮小的檔案也有問題,儘管我們可以改善這個功能,透過類似 Prettier 的工具自動處理此類檔案。