Github 上有一個庫,名為abc/xyz.
我已經分叉了庫來更新它的composer.json.
它的require部分composer.json是:
{
"require": {
"xyz/abc": "^1.2",
}
}
分叉版本的require部分是:
{
"require": {
"xyz/abc": "^2.4",
}
}
當我這樣做時composer require abc/xyz,它還會下載并安裝xyz/abc
庫。
但是當我使用分叉版本并將以下內容添加到repositories我的根 composer.json 的部分時
{
"repositories": [
{
"type": "package",
"package": {
"name": "abc/xyz",
"version": "1.2",
"dist": {
"url": "url to zip folder of the forked version",
"type": "zip"
},
"type": "library"
}
}
]
}
現在,當我這樣做時composer require abc/xyz,它只下載和安裝實際的包,而不是xyz/abc.
我也嘗試使用type: git而不是zip并將其更改url為 git 版本,但結果相同。
如果我在根 composer.json 中使用它,它只會下載并安裝該依賴項
"type": "package",
"package": {
"name": "abc/xyz",
"version": "1.2",
"dist": {
"url": "url to zip folder of the forked version",
"type": "zip"
},
"type": "library",
"require": {
"xyz/abc": "^2.4",
}
}
這是標準方式嗎?或者我在這里做錯了什么?
uj5u.com熱心網友回復:
當您使用型別的存盤庫時,不會讀取package鏈接的包。composer.json
該package型別用于定義 行內composer.json檔案,主要用于不支持 composer的包。
從檔案:
package:如果您依賴的專案不支持 Composer,則可以使用存盤庫內聯定義包package。您基本上行內了 composer.json 物件。
(強調我的)
如果您的包確實支持 composer(例如,包含一個composer.json定義依賴項、自動加載器等的檔案),請使用 type vcs。
要使用分叉版本,您只需添加一個包含分叉版本的存盤庫。通常,對于分叉,我只依賴dev-master/ dev-main,因為分叉并未真正發布,僅包含一些“主”包中不存在的熱修復程式。或dev-whatever-branch-your-fixes-exist。
假設您的 forkxyz/abc托管在 上https://github.com/ahmad/abc,您的根目錄composer.json應該類似于:
{
"repositories": [
{
"type": "vcs",
"url": "https://github.com/ahmad/abc"
}
],
"require": {
"xyz/abc": "dev-master"
}
}
(只是添加了相關部分,顯然這并不意味著您必須洗掉根composer.json檔案的其余部分,只需更改相應的位)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/464493.html
