macfja/composer-phar-bin

Composer 插件,用 Phar 替换开发依赖

安装: 44

依赖者: 0

建议者: 0

安全性: 0

星标: 0

关注者: 3

分支: 0

开放问题: 0

类型:composer-plugin

1.0.1 2020-05-01 14:39 UTC

This package is auto-updated.

Last update: 2024-08-29 05:18:55 UTC


README

该插件将开发依赖替换为其 Phar。

为什么?

我多次遇到开发工具(代码质量、文档生成等)的依赖锁定,而大多数工具都有 Phar 二进制文件。

为了管理这些 Phar,已经存在解决方案,如 Phive,但它是一个需要安装的另一个工具,需要运行另一组命令。

因此,我创建了这个 Composer 插件,以尽可能不明显的方式将 Phive 集成到 Composer 中。

它是如何工作的?

当运行 composer installcomposer updatecomposer require 时,插件将检查您的 require-dev 包是否存在于 Phive 仓库中。如果找到,则 Phive 将链接您的 composer 二进制文件中的 Phar,以便脚本能继续运行,并且依赖将被忽略(及其子依赖)。

安装

只需运行: composer require macfja/composer-phar-bin,然后进行 composer install
或全局: composer global require macfja/composer-phar-bin

任何后续的 composer installcomposer updatecomposer require 都将触发依赖替换。

如何阻止一个包被替换?

如果出于某种原因需要由 Phive 知道的包不被替换为其 Phar,您可以在您的(根) composer.json 中添加一个不替换的包列表。

extra 部分,添加包含名为 exclude 的数组的对象 composer-phar-bin,该数组包含 Composer 包。

示例

在下面的示例中,phpunit/phpunit 将由 Composer 下载和管理,但 phan/phan 将被替换为其 Phar。

{
    "name": "macfja/composer-phar-bin-test",
    "require-dev": {
        "macfja/composer-phar-bin": "^1.0.0",
        "phpunit/phpunit": "^9.1",
        "phan/phan": "^2.7"
    },
    "extra": {
        "composer-phar-bin": {
            "exclude": ["phpunit/phpunit"]
        }
    }
}

局限性

该插件仅在使用后工作。这看起来很明显,但有些情况因为这一点而难以理解。

新环境中依赖冲突

让我们假设您使用该插件并且您有 虚拟的 一些冲突。一切正常,该插件用 Phar 替换了冲突库。

有人想安装该项目,但 Composer 抱怨某些包(“您的需求无法解析为可安装的包集。”)。

原因可能是您没有提交您的 composer.lock 文件,因此 Composer 正在尝试解决所有依赖项,由于我们的插件尚未安装和加载,它无法施展其魔法。

如何解决这个问题?

您有几个解决方案可以解决这个问题

  • 您可以提交您的 composer.lock 文件
  • 您可以逐步生成它:移除所有开发依赖项,然后安装您的项目(composer install),现在重新添加所有您的开发依赖项
  • 您可以在全局范围内安装插件(这样它将始终被加载)

全新安装中缺少 phars

您下载了一个带有 composer.lock 的项目,运行 composer install

一切看起来都正常,但当您第一次运行 composer 脚本时,Composer 抱怨缺少文件。

这里的问题在于 Composer 读取了 composer.lock 文件,因此只安装了您的依赖项,排除了那些由我们的插件管理的依赖项。但是,由于插件尚未加载(因为尚未安装),它不会安装 Phar。

如何解决这个问题?

您有两个选项

  • 简单地重新运行 composer install
  • 全局安装插件(这样它总是会被加载)

贡献

您可以为库做出贡献。为此,您可以在 Github 上创建问题来

  • 提出您的问题
  • 请求任何更改(错别字、糟糕的代码等)
  • 等等...

您还可以通过 PR 来

  • 建议更正
  • 等等...

本地安装

首先克隆项目(无论是这个仓库,还是您的分支),然后运行

make install # Install project vendor
make all # Run QA tools + generate docs

验证您的代码

当您完成代码编写后,运行以下命令检查代码质量是否符合定义的规则,并对它进行格式化

make analyze # Run QA tools

许可证

MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件