是否在package.json中使用确切的版本号?

时间:2018-07-07 12:33:30

标签: node.js npm

package.json中npm依赖项的版本号的常见做法是输入准确的版本号(如1.2.4)而不是不精确的版本号(如^1.2.4),该版本号允许安装{ {1}}),以确保以后的安装不会因依赖项的更改而中断(例如,this article)。

使用确切的版本号有一个缺点,即您无法自动更新依赖项的错误修复版本。当它的嵌套依赖项具有安全修复程序或错误修复程序时,这是一个问题。例如,此时软件包1.2.5使用karma-browserstack-launcher,该软件包正在使用包含安全漏洞的browserstack的过时版本。由于https-proxy-agent现在可以在依赖项中查找安全问题,因此这一点现在变得非常明显。

一段时间以来,我们有了npm audit,它用于锁定所有依赖项的版本号。这可能会改变我们处理package-lock.json中确切或不准确的版本号的方式。

我的问题是:给定package.jsonpackage.json,当今处理依赖版本号的最佳策略是什么?是否使用确切的版本?如果嵌套依赖项没有升级,我该如何处理它们呢?

1 个答案:

答案 0 :(得分:0)

我的感觉是

    属于库且打算供他人使用的
  • 软件包应具有不精确的版本号,并应指定其最低工作要求;和
  • 不会包含在其他地方的顶级项目应指定其要求的完整版本号,以便他们可以最大程度地控制更新时间。