所有对比操作均在本地浏览器中完成,不会上传任何数据
工具加载中...
工具加载中...

工具基本信息

  • 名称: 静流Node.js依赖对比工具
  • 简介: 它可以帮助你快速对比两个 Node.js package.json 文件的依赖版本差异,发现新增或删除的依赖项,版本号差异等。
  • 版本:1.0.0
  • 最近更新:2026-01-16

文档编辑时间轴

  • 2026-01-18: 初始版本发布

使用指南

  1. 在左侧输入框中粘贴或上传第一个 Node.js package.json 文件的内容,在右侧输入框中粘贴或上传第二个 Node.js package.json 文件的内容
  2. 点击"开始对比"按钮,工具会自动对比两个文件的依赖版本差异,并显示差异结果
  3. 以左侧文件为主文件,左侧缺少的依赖项判定为新增,右侧缺少的依赖项判定为删除
  4. 点击"重置"按钮,工具会清空对比结果
  5. 点击"下一个差异"按钮,工具会显示下一个差异结果
  6. 点击"上一个差异"按钮,工具会显示上一个差异结果
  7. 点击"交换左右"按钮,工具会交换左右两个输入框的内容

注意事项

  • 下一个或上一个差异的移动顺序可能和展示的顺序不一致,但找到的差异位置是正确的
  • 左右交换内容后,需要重新点击"开始对比"按钮进行对比(后续会优化)

为什么开发这个工具

    在开发Node.js项目的时候,如果两个项目有关联,例如主系统和插件,主系统和子系统,主系统和依赖库等,调试中间出现的很多莫名奇妙的问题都是因为依赖版本没有对齐的原因

    如果两个项目的依赖项都一致, 只是版本差异, 那么直接拷贝同步一下即可。但实际上两个项目只有一部分依赖项一致,各自还有很多独有的依赖项//(ㄒoㄒ)/~~

    在处理这个问题时,我只能一个个手动对比,费时费力,效率低下。这个时候如果能够快速对比两个项目或系统的依赖版本差异,就能快速发现问题所在,并及时解决问题。

    所以我就想开发一个工具,可以让我更方便地对比两个 Node.js package.json 文件的依赖版本差异,发现新增或删除的依赖项。当然中间还加了了很多感觉没啥用的功能。。。也就先这样了

    如果你也碰到了同样的问题,希望这个工具能帮助到你。^_^

它是如何实现的

    这个工具的实现原理其实很简单,就是提取两个 package.json 文件的依赖部分,进行对比,发现差异项。

    本来可以只提取依赖部分进行对比,直接一个表格展示结果即可。但是为了方便用户查看,我添加了行号,状态栏,高亮等功能。

    这就带来了新问题,第一个问题就是因为两边依赖有各自的差异,要让用户在观感上一致,清晰看到差异,就需要添加占位行,来保持两边行数一致。

    第二个问题就是上一个差异移动到下一个差异时,位置不一致的问题,因为占位行是虚拟的,所以需要根据差异类型计算出占位行对应的真实行号。保证左右同步定位

    所以就搞了一个稍微复杂点的文本对比面板来解决这个问题,主要就是管理真实行和虚拟行的映射关系,以及差异行的高亮映射, 还有滚动同步等功能

    总的来说,就是我自己的完美主义导致了工具的复杂度上升,偏离了最直接解决问题的初衷(~ ̄(OO) ̄)ブ

它在哪些场景会被用到

  1. pnpm启用workspace模式时,快速对比子项目和workspace中的依赖版本差异
  2. 子项目依赖库更新时,快速对比依赖版本差异,及时更新workspace中的依赖
  3. 项目管理人员同步依赖版本时,快速发现依赖差异
  4. 开发人员在处理莫名奇妙的bug时优先使用此工具快速排除是否是依赖版本差异导致的

谁需要这个工具

  1. Node.js开发者
  2. Node.js项目维护者
  3. Node.js项目管理者
  4. 前端工程师
  5. 全栈工程师
  6. Vue.js开发者
  7. React.js开发者
  8. Angular开发者
  9. 小程序开发者
  10. 其他使用package.json文件的项目相关人员

它有什么优势

  • 完全免费,无需注册,无需登录,无需下载
  • 完全在线,无需安装,无需配置,无需依赖
  • 快速发现依赖版本差异,发现新增或删除的依赖项,版本号差异等

它还有什么地方可以做的更好

  1. 用户授权后,支持快速保存或读取本地的package.json文件
  2. 展示本地文件的路径
  3. 在分栏中间增加一个左右箭头,点击后可以将右侧内容行应用到左侧,或者将左侧内容行应用到右侧(其他文本对比工具也适用)
  4. 跳转差异位置时,按顺序移动
  5. 交换左右内容后,直接重新对比

常见问题

Q: 我的数据会被上传到服务器吗?

A: 不会。所有的 JSON 格式化处理都在你的浏览器本地完成,不会上传到任何服务器。

Q: 为什么下一个或上一个差异的移动顺序可能和展示的顺序不一致,但找到的差异位置是正确的

A: 因为实际的差异已经找到了,就是需要按一个顺序排列,比如以左侧为主来排列差异位置顺序。这个需求比较麻烦,暂时懒得做了

术语解释

Node.js: Node.js是一种基于Chrome V8引擎的JavaScript运行环境,可以让你在服务器端运行JavaScript代码

pnpm的workspace模式: pnpm的workspace模式是pnpm的一种模式,可以让你在同一个项目中管理多个子项目,每个子项目都有自己的package.json文件, 但它们共享同一个node_modules目录, 各自的node_modules目录是隔离的但其中是链接指向同一个根目录下的node_modules目录。子项目也可以互相依赖

monorepo: monorepo是一种项目管理方式,多个项目共享同一个代码大仓库,每个项目都有自己的package.json文件又不冲突

workspace: workspace是pnpm的workspace模式中的一个概念,表示一个工作空间,一个工作空间可以包含多个子项目

工具迭代主时间线

  • [2025-12-05][0.1.0]: 初始版本发布