对于package.json中npm依赖项的版本号,通常的做法是输入确切的版本号(例如1.2.4
),而不是输入不准确的版本号(例如^1.2.4
,这样可以安装bug修复版本1.2.5
),以确保以后的安装不会因更改而中断依赖关系(例如,参见本文)。
使用确切的版本号有一个缺点,即您不能自动更新依赖项的错误修复版本。当它的嵌套依赖项具有安全修复程序或错误修复程序时,这是一个问题。例如,此时程序包karma-browserstack-launcher
使用browserstack
,它使用的版本已https-proxy-agent
包含安全漏洞。这现在变得非常明显,npm audit
这要归功于它在依赖项中查找安全性问题。
一段时间以来,我们有了package-lock.json
,用于锁定所有依赖项的版本号。这可能会改变我们处理中确切或不准确的版本号的方式package.json
。
我的问题是:给定package.json
和package-lock.json
,当今处理依赖版本号的最佳策略是什么?是否使用确切的版本?如果嵌套依赖项没有升级,我该如何处理它们的安全性问题?
我的感觉是