2012-11-13 20 views
1

是否可以創建一個將代碼放置在多個不同目錄中的自定義PHP Composer安裝程序?我想鏈接到存儲庫是建立這樣的:創建一個PHP Composer安裝程序以解壓到多個目錄

/後備箱

  • /公共
  • /庫
  • /內容

和作曲家提取到

/myproject/public

/myproject的/庫

/myproject的/內容

這可能嗎?我知道我需要一個自定義安裝程序來做到這一點,但我不確定如何設置安裝程序以從代碼庫導出代碼並將其放在多個不同的目錄中。

+0

也許你應該使用作曲家/安裝程序,而不是創建自己的一個嗎? http://getcomposer.org/doc/faqs/how-do-i-install-a-package-to-a-custom-path-for-my-framework.md – Ziumin

+0

@Ziumin可以將它安裝到單個目錄,而不是真的到多個不同的目錄。 –

+0

我看到它的方式,trunk是你的軟件包,所以如果你將軟件包安裝在/ myproject中,它將在那裏解壓那三個dirs,一切都很好。問題是,/ myproject是否是由該主幹構成的項目,或者如果您想將主幹中的任何內容安裝爲另一個項目的依賴項,則可將其放入公共/庫/內容中。如果是後者,如果沒有自定義安裝程序,則無法真正做到這一點,然後再次執行IMO通常是個不錯的主意。 – Seldaek

回答

0

您可以創建一個自定義安裝程序,負責將軟件包安裝到這些目錄中。您可以使用包中的「type」屬性指明要使用哪個定製安裝程序。自定義安裝程序允許您在下載軟件包後運行任何PHP代碼,這樣您就可以在那裏做任何你能想到的事情,特別是將不同的文件移動到不同的地方。有關創建自定義安裝程序的更多詳細信息,請參閱http://getcomposer.org/doc/articles/custom-installers.md

儘管我同意人們對您的問題發表了評論,但您確實不應該這樣做。嘗試和重構你的項目,這樣你就不需要這個功能,你將爲自己節省很多工作。

+0

是的,我決定去一個不同的方向,使用phing來做我需要做的事情,同時讓作曲家處理依賴包。謝謝! –

1

如果仍的情況下,考慮測試我的圖書館(基於插件的mnsami):

https://github.com/ideaconnect/composer-custom-directory

允許自定義路徑:

"extra":{ 
    "installer-paths":{ 
     "./monolog/": ["monolog/monolog"] 
} 

,甚至動態名稱替換:

"extra": { 
    "installer-paths": { 
     "./packages/{$name}": ["sourcepackage/package_A","sourcepackage/package_B","sourcepackage/package_B"] 
    } 
}, 

帶標誌鏈:

目前supprted標誌是:

F - capitalizes first letter. 
P - changes all entries of a _ or - followed by a character to only that character, capitalized. 
相關問題