581 字
3 分钟
npm依赖管理
公司的历史项目会遇到这样的问题,明明是相同的依赖,配置也一样,运行之后就是出现问题,有时候甚至连依赖都安装不了。
这个现象,基本可以定性为同一个原因:项目安装的依赖版本不一致,新版本出现兼容性问题。
这些项目,基本缺少package-lock.json文件的;或者文件不是最新的,有些同学安装依赖之后,没有把最新的lock文件提交。
lock文件是什么
npm install安装依赖后,会自动创建一个lock文件,文件中保存了依赖树,其中包括了依赖的版本号。下一次安装依赖时,会根据lock文件的依赖及指定版本号进行安装。对于yarn、pnpm也类似。
lock文件有什么用
- 加速安装。由于保存了依赖列表,所以不用向npm查询了,对于依赖的依赖也是如此,由于依赖的层层嵌套,查询整个依赖树也相当耗时。
- 固定依赖版本号。lock文件写入的是精确的版本号,所以每次安装的依赖版本都是一致的。
缺少lock文件有什么风险
- 安装依赖会比较慢,但如果请求不超时也没问题。
- 由于安装依赖之后,依赖版本默认是
^x.x.x
的格式,即会自动升级到最新的修正版本号,这就是问题所在了,谁也无法保证新版本可以正常运行。lock文件没有更新也会这样。
解决方案
- lock文件还是非常有用的,所以建议项中每次
更新依赖
还是把lock文件提交到版本管理中
。 - 对于国内的项目,一般需要设置npm镜像源,为避免团队小伙伴错误安装npm官方源的依赖,导致lock文件批量更新。可在项目.npmrc设置
registry=xxx
(一般设置为https://registry.npmmirror.com
) - 对于不包含lock文件的依赖,也是可能出现文章中提及的问题的,这种情况需要在项目中安装异常依赖的正常版本,需要指定精确版本号,即
x.x.x
。 - lock文件非常重要,所以在进行代码审核时也要格外注意。