xiian/composer-repo-tool

轻松管理您的 composer 设置中的自定义仓库。

1.0.2 2022-09-09 15:09 UTC

This package is auto-updated.

Last update: 2024-09-09 19:16:42 UTC


README

Build Status Code Coverage License

管理 composer.json 中定义的仓库

当前功能仅限于将类型为 git 的 github 仓库转换为类型 vcs(这使 composer 能够下载存档分发而不是每次都克隆)。

它还非常符合我编写时的使用场景,所以效果可能会有所不同,欢迎提交 pull request。

安装

如果你在考虑使用这个工具,那么你已经熟悉 composer。它非常标准。

$ composer require --dev xiian/composer-repo-tool

这将安装 ./vendor/bin/composer-repo-tool 以在项目中使用。

你也可以全局安装

$ composer global require --dev xiian/composer-repo-tool

这将安装到 $COMPOSER_HOME/vendor/bin/,它应该已经包含在 $PATH 中。

使用方法

更新单个包的仓库

$ composer-repo-tool update $VENDOR/$PACKAGE

更新所有仓库

$ composer-repo-tool update:all

您还可以传递一个 --dry-run 标志来查看工具 做什么,而实际上不执行任何操作。

内部机制

对于每个提供的包,update 命令将执行以下步骤

  1. 重写给定包的 composer.json 中的 repositories 条目
    • 使用 vcs 而不是 git
    • 将 URL 从 git@$GITHUB_URL:$USER/$REPO.git 转换为 https://$GITHUB_URL/$USER/$REPO.git
  2. 实际从 vendor/ 目录中删除包
  3. 使用适当的参数运行 composer update 以切换到使用 dist 而不是 source
  4. composer.lockcomposer.json 文件执行 git 提交。 (我告诉你这是有偏见的)

update:all 命令将为每个未在 composer.lock 文件中与 dist 相关的已安装包执行上述步骤。

待办事项

  • 解耦源代码管理。我喜欢在每个包更新后执行任务(以实现原子性),但不是每个人都想要相同的东西。
  • 批量模式。 update:all 比较慢,因为它为每个包执行完整的更新周期。如果不考虑原子性,所有这些更新可以一起完成,而 composer update 只需要运行一次,这将大大加快速度。
  • 更直接地与 composer 集成。使用 composer/composer 的内部机制可以通过跳过一些可能冗余的 composer update 步骤来加快速度。