2017-04-13 82 views
2

我有一個GIT知識庫創建可以通過作曲家下載和安裝的發行版。作曲家自定義發行包

這些版本目前創建包含整個存儲庫的tarball。問題是存儲庫非常龐大,我不需要整個內容。

除此之外還有一個構建過程,編譯,合併等,並提供了一個包,要小得多。

我想什麼是上傳來自構建過程歸檔,並提供該軟件包下載時,作曲家需要它。

就目前情況來看,我不認爲這是一個選項。即使我上傳自定義的archive.tar.gz作曲家仍然下載來自GIT標籤(包含每個單一文件的巨大壓縮包)的原始tarball文件。

有沒有解決這個問題的方法?

+0

我認爲[包裝](https://getcomposer.org/doc/05-repositories.md#package-2)是你在尋找的。 –

回答

0

我結束了創建的PHP類來處理pre-package-install事件由作曲家拋出創建新的文件夾laravel包名

<?php 

namespace Company\Composer; 

use Composer\Installer\PackageEvent; 

require_once(__DIR__ . "/../../../vendor/autoload.php"); 

class EventHandler 
{ 
    public static function prePackageInstall(PackageEvent $event) 
    { 
     $operation = $event->getOperation(); 
     $package = $operation->getPackage(); 
     if ($package->getName() !== 'company/repo-name') { 
      return; 
     } 

     $distUrl = 'https://github.com/company/repo-name/releases/download/%s/archive.zip?access_token=%s'; 
     $package->setDistUrl(sprintf($distUrl, "v" . $package->getFullPrettyVersion(), '[GITHUB-USER-TOKEN]')); 
    } 
} 

通知[GITHUB-USER-TOKEN]如果包是私人回購(如我的情況),則需要使用此方法。

composer.json

"pre-package-install": [ 
      "Company\\Composer\\EventHandler::prePackageInstall" 
     ], 
0

創建自己的bash或shell腳本,做你一切骯髒的工作。你的bash腳本應該在安裝過程中通過作曲家被解僱。 在您的腳本中包含,安裝包,壓縮包並通過SCP命令上傳。這將爲你做所有的事情。請務必在您閱讀安裝說明時提及,該用戶需要使用sudo權限或管理權限權限運行composer安裝。

下面是一些鏈接以供參考使用shell腳本

https://getcomposer.org/doc/articles/scripts.md

https://edmondscommerce.github.io/composer/composer-run-utility-bash-script.html

0

我相信你在找什麼將設置你的composer.json被配置爲使用dist代替autopreferred-install

https://getcomposer.org/doc/06-config.md#preferred-install

然後,您可以在github中使用適當的標籤創建一個新版本,並在那裏上傳二進制文件。

PS:我還沒有測試這一點,但它似乎像它應該工作。

+0

這就是我首先想到的,但可悲的是它只是下載整個回購存檔。 –

0

加入到composer.json

"repositories": [ 
     { 
     "type": "path", 
     "url": "./laravel-package-name" 
     } 
], 

,並與項目文件夾在你的代碼