davidrjonas / composer-lock-diff
查看在执行 composer update 后发生了哪些变化。
This package is not auto-updated.
Last update: 2024-09-14 20:25:20 UTC
README
通过将 composer.lock 与 git HEAD 进行比较,查看运行 composer update 后哪些包已发生变化。
需求
- php >= 5.3
没有其他依赖。
安装
composer global require davidrjonas/composer-lock-diff:^1.0 # With zsh, run `rehash` to make it known to the shell. # try it composer-lock-diff --help
如果未找到 composer-lock-diff,请确保 ~/.composer/vendor/bin
包含在您的 $PATH
环境变量中。有关如何操作的更多信息,请参阅 Stack Overflow 上的此问题:如何将 composer-vendor-bin 目录放置在您的 PATH 中。
用法
composer update
# don't commit yet!
composer-lock-diff
或者从 vim 中,要插入输出到提交信息中,请输入 :r!composer-lock-diff
。
选项
--path, -p
: 使用哪个基本路径进行前缀。默认 "./"--from
: 要比较的文件、git 引用或 git 引用与文件名(HEAD:composer.lock)--to
: 要比较的文件、git 引用或 git 引用与文件名(composer.lock)--md
: Markdown 表格输出--json
: json 输出--pretty
: 与--json
结合时进行美观输出(仅适用于 >=5.4)--no-links
: 在纯文本或 markdown 中不包括比较链接--only-prod
: 仅包括来自packages
的更改--only-dev
: 仅包括来自packages-dev
的更改--vcs
: 强制 vcs(git、svn 等)。默认从路径自动检测
^ 文件包括任何可用作为 协议流包装器 的内容,例如 URL。
示例纯文本表格输出
+--------------------+-------+--------+------------------------------------------------------------------+
| Production Changes | From | To | Compare |
+--------------------+-------+--------+------------------------------------------------------------------+
| guzzlehttp/guzzle | 6.2.0 | 6.3.0 | https://github.com/guzzle/guzzle/compare/6.2.0...6.3.0 |
| hashids/hashids | 2.0.0 | 2.0.4 | https://github.com/ivanakimov/hashids.php/compare/2.0.0...2.0.4 |
| league/flysystem | 1.0.0 | 1.0.42 | https://github.com/thephpleague/flysystem/compare/1.0.0...1.0.42 |
| monolog/monolog | NEW | 1.21.0 | |
+--------------------+-------+--------+------------------------------------------------------------------+
+------------------+--------+---------+---------+
| Dev Changes | From | To | Compare |
+------------------+--------+---------+---------+
| phpspec/php-diff | v1.0.2 | REMOVED | |
+------------------+--------+---------+---------+
Markdown 表格
原始
| Production Changes | From | To | Compare |
|--------------------|-------|--------|-------------------------------------------------------------------------|
| guzzlehttp/guzzle | 6.2.0 | 6.3.0 | [...](https://github.com/guzzle/guzzle/compare/6.2.0...6.3.0) |
| hashids/hashids | 2.0.0 | 2.0.4 | [...](https://github.com/ivanakimov/hashids.php/compare/2.0.0...2.0.4) |
| league/flysystem | 1.0.0 | 1.0.42 | [...](https://github.com/thephpleague/flysystem/compare/1.0.0...1.0.42) |
| monolog/monolog | NEW | 1.21.0 | |
| Dev Changes | From | To | Compare |
|------------------|--------|---------|---------|
| phpspec/php-diff | v1.0.2 | REMOVED | |
渲染
开发
总是欢迎新功能!请遵循以下指南
- 尽量匹配现有代码的风格,即使它不是您自己的风格(抱歉!)。
- 确保有方法来测试功能。
- 使用 PHP 5.3 进行测试(我是认真的!)> = 5.4 < 7,7.current。Docker 很有帮助,特别是对于旧版本。只需运行 ubuntu:12.04 图像并安装 php 5.3 和 14.04 的 5.6。如果您遇到困难,我可以提供帮助。
Makefile 中有一些测试用例。运行 make | less
并检查输出。如果您需要特定版本或更多信息,请继续阅读。
要手动使用测试数据运行,只需将 --to
和 --from
参数指向锁文件。
php ./composer-lock-diff --from ./test-data/composer.from.lock --to ./test-data/composer.to.lock
Docker 非常有助于针对特定版本的 php 和/或 composer。
docker run --rm -it -v "$PWD":/src -w /src php:7.4.2 \ php ./composer-lock-diff --from ./test-data/composer.from.lock --to ./test-data/composer.to.lock
有时您想测试与 git 相关的函数。为此,首先我创建一个临时存储库。然后我将其中的 test-data/composer.from.lock
作为 composer.lock
复制到其中,以设置上一个状态,并将 test-data/composer.to.json
作为 composer.json
以设置未来状态。提交这些文件后,运行 composer-lock-diff
并使用您要测试的选项,并直观地检查结果。
mkdir tmp && cd tmp git init cp ../test-data/composer.to.json composer.json cp ../test-data/composer.from.lock composer.lock git add . git commit -m "initial" composer update # or docker run --rm -it -v "$PWD":/src -w /src composer:latest php composer update php ../composer-lock-diff # or, if you want to use docker, you'll need git cd .. docker run --rm -it -v "$PWD":/src -w /src php:7.4.2 bash apt-get update && apt-get install -y git # You may want composer as well, curl -OL https://getcomposer.org.cn/download/1.9.3/composer.phar cd tmp php ../composer.phar update php ../composer-lock-diff
向 test-data/ 添加测试用例
- 在
./tmp
中创建一个新的临时 git 存储库 - 将
../test-data/composer.from.json
作为composer.json
复制,并将../test-data/composer.from.lock
作为composer.lock
复制。 - 提交它们。
- 运行
composer install
- 将您的预测试案例添加到
composer.json
中。请使用确切版本。 - 运行
composer update
。 - 生成的
composer.lock
应该类似于../test-data/composer.from.lock
,但由于临时依赖关系,会有所不同。没有办法完全避免这种情况。请使用composer-lock-diff
确保没有命名的包更改版本,并且您的新的测试案例存在。 - 将
composer.json
复制到../test-data/composer.from.json
,将composer.lock
复制到composer.from.lock
。 - 将
../test-data/composer.to.json
作为composer.json
使用。 - 将您的后测试案例添加到
composer.json
中。同样,确切版本最佳。 - 生成一个新的锁定文件。
- 使用composer-lock-diff测试您的功能。
- 当您满意时,将
composer.json
复制到../test-data/composer.to.json
,将composer.lock
复制到../test-data/composer.to.lock
。
测试案例
查看Makefile。
comopser-lock-diff
# 无参数composer-lock-diff --from ./test-data/composer.from.lock --to ./test-data/composer.to.lock
composer-lock-diff --path ./test-data/
composer-lock-diff --from <git ref>
# 这与 '无参数' 进行测试composer-lock-diff --from <git ref with filename>
composer-lock-diff --to <git ref>
composer-lock-diff --to <git ref with filename>
composer-lock-diff --only-dev
composer-lock-diff --only-prod
composer-lock-diff --no-links
composer-lock-diff --json
composer-lock-diff --json --pretty
composer-lock-diff --md
composer-lock-diff --md --no-links
如果有人可以帮助在Windows上进行测试,将会非常感激!
贡献者
感谢所有分享想法和代码的人!特别是: