理解 composer.json 的 replace
通常你在 composer.json 裡很少會用到 replace
這個 schema 屬性 ,不過在以下情境它就很有用了。
例如你正在開發一個專案 (也就是在 composer.json
中的 type
為 project
) ,它相依 original/library
這個套件以及 other/package
這個套件。很巧的是, other/package
這個套件也相依了 original/library
這個套件。
假設現在你覺得 orginal/library
這個可能已經太老舊,但維護者又不想讓你更動它,所以你決定把它 fork 出來改成一個相容但是功能更強大的 better/library
,並且把它標上新版號釋出。
現在回到你的專案,將原來的 original/library
改成 better/library
,並希望一切正常;只是 other/package
還相依在 original/library
,使得它跟你的 better/library
有衝突。那麼該怎麼讓 other/package
也改用 better/library
呢?我們可不打算再 fork 一份 other/package
!
這時候就是 replace
出場的時機了。