在我当前的项目中,我们在babel-core: '6.5.2'
文件中列出了具有确切版本(例如package.json
)的依赖项。
但是在最近的项目构建(包括在构建机器上运行npm install
)之后,一些节点模块被更新并且我们的工件被破坏了。
研究表明,尽管我们拥有package.json
文件中提到的确切版本,但所需模块可能通过其依赖关系依赖于自身,并且它们都使用了插入符依赖关系。在我们的例子中它似乎是
babel-core: '6.5.2'
取决于babel-register: '^6.16.0'
取决于babel-core: '^6.9.0'
已解析为babel-core: '6.26.0'
(由于caret range rules)指定的babel-core
版本会破坏我们的版本。
我们尝试创建package-lock.json
个文件,以防止这些传递依赖项以 解析的方式解析。
但是,package-lock
文件上的the documentation表示:
每当你运行npm install时,npm会生成或更新你的包锁
因此,所有依赖babel-core
带插入符号版本的软件包都会使用不正确的模块版本解析。
仔细查看package-lock.json
文件后,由于
雪球效应 - 更改一个依赖项需要更改所有其他依赖项,具体取决于它(这是递归过程)
需要验证您即将更改为和其哈希的版本(对于integrity
字段)
问题是:如何安装我的package.json
文件中提到的所有模块的确切版本,阻止NPM使用不同的版本再次解析它?