对依赖管理的感受

最近遇到了两件事:

  1. 以前参与的前端开发项目在接手人手里打出来的包总是有问题;
  2. 工作中需要对持续了十几年的delphi项目进行维护,需要搭建开发环境;

第一个问题初看起来非常奇葩,因为同样的代码在我自己的电脑上打包是正常的,在别人的代码上就是有问题,即使是使用同样的node版本和同样的操作系统都无法解决。后来换了另外一台曾经打过包的电脑试了一下,打包成功了,于是问题被定位到了依赖包的版本上。查看了一下我自己电脑上的依赖包版本,然后把package.json中的版本写死重装,问题就解决了。

为什么新安装的都不行呢?因为当初做这个项目的时候,我都是用--save-dev参数安装的依赖包,依赖包版本号默认为^A.B.C,即A不变,B、C可变,一年多过去了,对应的包有更新,可能存在BUG之类的,新安装的包只是主版本号没变的最新版,不是项目当初创建的时候使用的版本,所以就出问题了。之后我建议把所有依赖的版本都写死,最好还要把node_modules也一起提交到代码仓库,以避免未来再出类似的问题。于是又填了一个自己挖的坑。

第二个问题搭建delphi开发环境,delphi7 IDE的安装倒是比较顺利,但是项目依赖的安装比较麻烦。和我之前熟悉的前端开发和Java开发不同,delphi没有类似npm和maven这样的依赖管理工具,所有第三方控件都要进行安装,有些还需要手动设置lib目录,dll和ocx文件需要手动在windows中注册。

这些事情网上都有教程,虽然是第一次弄觉得很麻烦,但还可以忍受,最大的问题是,项目有哪些依赖根本没有记录,开发前辈是靠记忆把需要用到的控件拷给我。记忆是很不可靠的,所以经常是我装好后试着编译,看提示缺少什么文件,然后拿文件名去问delphi同事,他再把对应的控件拷给我,如此反复。对于习惯了maven和npm一键安装所有依赖的我来说,这个过程相当痛苦。

我对delphi开发没有什么经验,对于delphi近十几年来的进化过程,最新的开发工具也没有什么了解。但仅仅只看手头的项目,我觉得其依赖管理有不少改进的空间:

  1. 我觉得项目所需要第三方依赖安装包可以和代码一起提交到代码仓库,这样能避免遗漏,新人将代码拉下来之后,所需要的依赖就全部都有了,无需再到处拷;
  2. 对于需要在windows中注册的dll和ocx之类的,可以写一个bat,一键自动注册;
  3. 可以写一个文档专门说明依赖安装的方法与步骤,这样对新人比较友好。

在调研了不同语言的依赖管理方法之后,综合各种实践方法和意见,个人觉得,开发中的依赖管理按以下的原则去处理会比较好:

  1. 有依赖管理工具的,依赖包的版本号要精确,最好写死。相关依赖包最好能在企业内部搭建私服进行存放,以避免官网更新或删除。如果没有搭建私服的条件,将依赖包一起提交到代码仓库会是一个比较好的选择;
  2. 没有依赖管理工具的,依赖包最好和代码一起提交到代码仓库进行保存,并完善安装文档,有能力编写工具进行批处理安装的就提供一个。使用开源项目是最方便的,因为可以把源代码放到工程中一起编译,省去了安装的麻烦。
posted @ 2017-08-06 11:16  linden5  阅读(626)  评论(0编辑  收藏  举报