2016-01-06 45 views
1

當我運行作曲家安裝時,它會安裝我的所有「需求」和其他包的「需求」。可以在Composer配置中忽略子依賴項嗎?

我composer.json

{ 
    "name": "my_app", 
    "require": { 
     "some/package": "0.0.0" 
    } 
} 

的 「孩子」 依賴

{ 
    "name": "some/package", 
    "require": { 
     "zendframework/zend-mail": "2.4.*@dev", 
     "soundasleep/html2text": "~0.2", 
     "mpdf/mpdf": "6.0.0", 
     "endroid/qrcode": "1.*@dev" 
    } 
} 

我知道,它可能忽略了PHP擴展,但對於這些第二需要包?

回答

1

我知道有可能忽略php擴展,但是這些第二個需要包呢?

是的,你可以使用--ignore-platform-reqs忽視PHP,HHVM,lib- *和外部 - *平臺的要求,並強制安裝,即使本地機器不能滿足這些。

但是,我不確定您是否正在提出您的問題。在你的應用程序中需要一個沒有依賴關係的包的用例是什麼?這不是使用Composer的主要原因嗎?

,它不可能,除非您正在尋找require --no-update,它會禁用自動更新依賴關係。請看看CLI options for requireinstall

+0

,我使用有很多的「庫」,我用一些的包。所以那些沒有使用過的庫需要我不需要的東西,但我不想複製這些文件並放棄下一次更新。 – Pablo

+0

我建議採用不同的方式:獲取所有東西,也是子依賴項,構建應用程序並僅使用其中一些依賴項,然後在構建穩定應用程序的發佈包時,先刪除未使用的庫或在包裝期間忽略它們。這允許在開發過程中處理所有依賴項,但將部署的內容縮減到最小。 –

+1

對!謝謝你的建議。 – Pablo

4

可以忽略包與您composer.json的replace性質下載:https://getcomposer.org/doc/04-schema.md#replace

這樣,你告訴作曲家,您採取或十分小心,包的內容對你自己的。

這可以幫助你忽略一個你確定不需要的軟件包,但它有點怪異。所以要注意一些事情(如測試)可能會中斷。 更好的方法是向原始包的維護人員申請補丁以使需求可選(通過suggest屬性)。

編輯:
爲「禁用」的要求,以zendframework/zend-mail

{ 
    "name": "my_app", 
    "require": { 
     "some/package": "0.0.0" 
    }, 
    "replace": { 
     "zendframework/zend-mail": "*" 
    } 
} 
+0

我不明白從文檔,我可以如何防止兒童依賴。你能舉個例子嗎? – Bunyamin

+1

@Bunyamin我在我的文章中添加了一個例子。 – derhasi

相關問題