【问题标题】:Composer custom release packageComposer 自定义发布包
【发布时间】:2017-09-09 08:55:08
【问题描述】:

我有一个 GIT 存储库,它创建可以通过 Composer 下载和安装的版本。

这些版本当前创建包含整个存储库的 tarball。问题是存储库很大,我不需要全部内容。

除此之外,还有一个编译、合并等的构建过程,并提供一个更小的包。

我想要上传来自构建过程的存档,并在作曲家要求时提供该包作为下载。

就目前的情况而言,我不认为这是一种选择。即使我上传自定义 archive.tar.gz 作曲家仍然会下载来自 GIT 标签的原始 tarball 文件(包含每个文件的巨大 tarball)。

这个问题有解决办法吗?

【问题讨论】:

  • 我认为Package 是你要找的。​​span>

标签: php github composer-php release


【解决方案1】:

我最终创建了 php 类来处理 Composer 抛出的 pre-package-install 事件。

<?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"
        ],

【讨论】:

    【解决方案2】:

    添加到 composer.json

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

    并在项目文件夹中使用您的代码创建新文件夹 laravel-package-name

    【讨论】:

      【解决方案3】:

      我相信您正在寻找的是将您的 composer.json 设置为配置为使用 dist 而不是 auto 作为其 preferred-install

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

      然后你可以在 github 中创建一个带有适当标签的新版本,并在那里上传二进制文件。

      PS:我还没有测试过,但它似乎应该可以工作。

      【讨论】:

      • 这也是我最初的想法,但遗憾的是它只是下载了整个 repo 的存档。
      【解决方案4】:

      创建您自己的 bash 或 shell 脚本来完成您所有的繁琐工作。您的 bash 脚本应该在安装期间通过 composer 触发。 在您的脚本中包括、包安装、压缩存档和通过 SCP 命令上传。这将为您完成所有工作。请务必在您的自述安装说明中提及,该用户需要使用 sudo 权限或管理员权限运行 composer install。

      下面是一些使用shell脚本的参考链接

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

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

      【讨论】:

        猜你喜欢
        • 2018-12-21
        • 2023-03-10
        • 2016-07-25
        • 1970-01-01
        • 2014-05-06
        • 2023-01-24
        • 2015-07-11
        • 2014-05-02
        • 2014-08-14
        相关资源
        最近更新 更多