项目简介
'whatsdiff' 是一个功能强大的命令行工具,用于检测项目依赖项在 'composer update' 或 'npm update' 之后的变化。它能够分析 'composer.lock' 和 'package-lock.json' 文件之间的差异,阅读更新包的变更日志和发布说明。此外,'whatsdiff' 内置了一个MCP服务器,通过标准化的协议向LLM(大型语言模型)提供上下文信息和功能,从而帮助LLM更好地理解和管理项目依赖升级。
主要功能点
- 依赖变更分析: 比较 Git 提交之间 'composer.lock' 和 'package-lock.json' 文件的变化,包括包的添加、删除、更新和降级。
- 发布说明和变更日志查询: 获取更新包的详细变更日志和发布说明。
- 交互式终端界面 (TUI): 提供一个直观的命令行用户界面,方便浏览依赖项的变化。
- 多种输出格式: 支持文本、JSON 和 Markdown 等多种输出格式。
- MCP 服务器支持: 向LLM提供关于依赖升级、兼容性检查和版本详情的标准化上下文服务。
- CI/CD 集成: 方便在持续集成/持续部署流程中检查特定依赖包的变化。
安装步骤
'whatsdiff' 可以通过 Composer 全局安装,或者下载预编译的二进制文件。
通过 Composer 全局安装 (推荐): 打开终端并执行以下命令:
composer global require whatsdiff/whatsdiff
请确保您的 '~/.composer/vendor/bin' 目录已添加到系统的 PATH 环境变量中,以便可以直接运行 'whatsdiff' 命令。
下载二进制文件: 您也可以直接从 GitHub 发布页面 下载适用于您操作系统的预编译二进制文件(目前支持 macOS x86_64/arm64、Linux x86_64/arm64 和 Windows x64)。下载后,将其放置到您系统的 PATH 环境变量中包含的目录中即可。
服务器配置 (供 MCP 客户端使用)
'whatsdiff' 的 MCP 服务器部分是一个独立的 PHP 脚本,它通过标准输入/输出 (stdio) 接口与 MCP 客户端通信。LLM 客户端需要配置服务器的启动命令,以便建立连接并调用其提供的工具。
这是一个示例配置,您可以在您的 MCP 客户端中参照它进行设置:
{ "serverInfo": { "name": "whatsdiff" }, "transport": { "stdio": { "command": "php", "args": ["/path/to/your/whatsdiff/bin/whatsdiff-mcp"] } } }
配置说明:
- 'serverInfo.name': MCP 服务器的名称,这里是 'whatsdiff'。
- 'transport.stdio': 表示使用 Stdio 传输协议。
- 'command': 启动 MCP 服务器的命令,这里是 'php'。
- 'args': 传递给 'command' 的参数列表。其中 '"/path/to/your/whatsdiff/bin/whatsdiff-mcp"' 应该替换为您系统中 'whatsdiff' 安装目录下的 'whatsdiff-mcp' 脚本的完整路径。通常,如果通过 Composer 全局安装,它可能在 '~/.composer/vendor/whatsdiff/whatsdiff/bin/whatsdiff-mcp' 或类似位置。请确保提供正确的绝对路径。
基本使用方法 (作为 CLI 工具)
查看最近的依赖变化:
whatsdiff # 或显式指定 whatsdiff analyse
比较两个 Git 提交之间的依赖变化:
# 比较两个标签 whatsdiff between v1.0.0 v2.0.0 # 比较两个提交哈希 whatsdiff between abc123 def456
启动交互式终端界面:
whatsdiff tui
检查特定包是否已更新 (例如用于 CI/CD):
# 检查 'livewire/livewire' 是否已更新 whatsdiff check livewire/livewire --is-updated # 检查 'new/package' 是否已添加 whatsdiff check new/package --is-added
查看更新包的发布说明 (例如查看 'guzzlehttp/guzzle' 从 7.7.0 到 7.8.1 的变更):
whatsdiff changelog guzzlehttp/guzzle 7.7.0...7.8.1 --type=composer --summary
信息
分类
开发者工具