项目简介

'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

信息

分类

开发者工具