在开发Node.js项目的时候,如果两个项目有关联,例如主系统和插件,主系统和子系统,主系统和依赖库等,调试中间出现的很多莫名奇妙的问题都是因为依赖版本没有对齐的原因
如果两个项目的依赖项都一致, 只是版本差异, 那么直接拷贝同步一下即可。但实际上两个项目只有一部分依赖项一致,各自还有很多独有的依赖项//(ㄒoㄒ)/~~
在处理这个问题时,我只能一个个手动对比,费时费力,效率低下。这个时候如果能够快速对比两个项目或系统的依赖版本差异,就能快速发现问题所在,并及时解决问题。
所以我就想开发一个工具,可以让我更方便地对比两个 Node.js package.json 文件的依赖版本差异,发现新增或删除的依赖项。当然中间还加了了很多感觉没啥用的功能。。。也就先这样了
如果你也碰到了同样的问题,希望这个工具能帮助到你。^_^
这个工具的实现原理其实很简单,就是提取两个 package.json 文件的依赖部分,进行对比,发现差异项。
本来可以只提取依赖部分进行对比,直接一个表格展示结果即可。但是为了方便用户查看,我添加了行号,状态栏,高亮等功能。
这就带来了新问题,第一个问题就是因为两边依赖有各自的差异,要让用户在观感上一致,清晰看到差异,就需要添加占位行,来保持两边行数一致。
第二个问题就是上一个差异移动到下一个差异时,位置不一致的问题,因为占位行是虚拟的,所以需要根据差异类型计算出占位行对应的真实行号。保证左右同步定位
所以就搞了一个稍微复杂点的文本对比面板来解决这个问题,主要就是管理真实行和虚拟行的映射关系,以及差异行的高亮映射, 还有滚动同步等功能
总的来说,就是我自己的完美主义导致了工具的复杂度上升,偏离了最直接解决问题的初衷(~ ̄(OO) ̄)ブ
A: 不会。所有的 JSON 格式化处理都在你的浏览器本地完成,不会上传到任何服务器。
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模式中的一个概念,表示一个工作空间,一个工作空间可以包含多个子项目
探索更多实用工具,提升工作效率