2014-06-10 86 views
2

我嘗試使用Composer安裝插件CakePHP-CSV。我將它從ProLoser/CakePHP-CSV中分離出來。 我不想將它安裝在供應商,但在插件文件夾中,並與Csv的名稱,而不是默認的插件名稱。我試圖在composer.json中使用額外的東西,但是我曾嘗試將它安裝在項目的Vendor文件夾中。使用作曲家從github安裝,在github沒有composer.json

"repositories": [ 
    { 
     "type": "package", 
     "package": { 
      "name": "CakePHP-CSV/Csv", 
      "version": "dev-master", 
      "source": { 
       "url": "https://github.com/sela/CakePHP-CSV", 
       "type": "git", 
       "reference": "origin/master" 
      } 
     } 
    } 
], 
"require": { 
    "CakePHP-CSV/Csv": "dev-master", 
}, 
"config": { 
    "vendor-dir": "Vendor" 
}, 
"extra": { 
    "installer-paths": { 
     "Plugin/Cvs": ["Plugin/cvs"] 
    } 
}    

回答

1

你需要使你的包依賴於composer/installers

Composer's documentation

如果你是一個包作者,想安裝到自定義目錄你的包,僅僅需要composer/installers並設置適當的type。如果您的軟件包專用於特定框架(如CakePHP,Drupal或WordPress),這很常見。這裏是一個WordPress主題爲例composer.json文件:

{ 
    "name": "you/themename", 
    "type": "wordpress-theme", 
    "require": { 
     "composer/installers": "~1.0" 
    } 
} 

後來(我已經添加斜體的重要組成部分):

作爲包消費可以設置或替代安裝路徑以獲得需要作曲者/安裝者的套件,方法是配置installer-paths多餘的套件。一個有用的例子是一個Drupal多站點設置,其中包應該被安裝到您的站點子目錄中。

注意extra is simply a place to put arbitrary data

任意額外的scripts消費數據。

這可以是幾乎任何東西。要從腳本事件處理程序中訪問它,你可以這樣做:

$extra = $event->getComposer()->getPackage()->getExtra(); 

第二部分是非常重要的;東西必須檢索額外的數據,並與它做些什麼。在這種情況下,這是composer/installers

+0

謝謝。首先複製了示例composer.json,我需要將composer.json放在哪裏?我將代碼分叉到自己的存儲庫中,但是如果我不將它分叉併爲插件創建composer.json,是否有辦法執行此操作? 我的本地機器上已經有1個composer.json了。 –

+0

@SelaYair,有兩個相關的'composer.json'文件。第一個是*包*,這個必須要有'composer/installers'。通常情況下,軟件包作者會提供這個,但這個特定的庫似乎並沒有這樣做,所以你可能必須自己創建它。分叉存儲庫是一個很好的方法,儘管您將負責將上游更改合併到您的分支中。 – Chris

+0

另一個'composer.json'是*您的應用程序*的一個,它依賴於CSV庫以及您需要的任何其他庫。這是您將放置'extra' /''installer-paths'位以重定位CSV庫的位置。 – Chris

0

我需要更多的代碼空間,所以我回答自己。下面的代碼工作,我不需要分叉代碼。

"repositories": [ 
    { 
     "type": "package", 
     "package": { 
      "name": "ProLoser/CakePHP-CSV", 
      "version": "1.0", 
      "type": "cakephp-plugin", 
      "dist": { 
       "url": "https://github.com/ProLoser/CakePHP-CSV/archive/master.zip", 
       "type": "zip" 
      } 
     } 
    } 
], 
"require": { 
    "composer/installers": "~1.0.0", 
    "ProLoser/CakePHP-CSV": "1.*" 
}, 
"config": { 
    "vendor-dir": "Vendor" 
}