2017-04-13 53 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" 
     } 
], 

,并与项目文件夹在你的代码