“ npm i-仅限于包锁定”有什么作用?

时间:2019-04-09 18:45:36

标签: node.js npm

npm i --package-lock-only到底是做什么的?该文档对示例有些害羞。 https://docs.npmjs.com/files/package-locks.html

我很想知道我的本地node_modules文件夹中是否有较旧的软件包,并且没有pack-lock.json文件,npm i --package-lock-only会根据我的本地node_modules文件夹中的版本生成一个package-lock.json还是会生成具有较新软件包版本的package-lock.json,该软件包版本与npm注册表中发布的package.json中的semver范围一致。

2 个答案:

答案 0 :(得分:4)

好吧,@Ben Wheeler 是准确的,但有一个地方可以提供有关此过程的一些背景知识。在常规情况下,包锁旨在为每个包及其应用程序中的依赖项设置完整的依赖树,因此不同机器上的每个开发人员都将拥有完全相同的树。这很重要,因为依赖包可能会随着时间更新,如果每个开发人员都使用不同的版本,它可能会破坏您的应用程序。因此,每次执行“npm i”时,如果您确实有 package.lock.json,它都会从那里安装软件包,而不是从 package.json 安装。 有时,当开发人员遇到依赖项错误时,他们倾向于删除锁定文件和 node_modules。这并不总是最好的选择。大多数情况下,只需更新锁定文件以反映带有 --package-lock-only 标志的 package.json,然后您可以再次执行“npm i”来安装您的软件包。锁定文件应提交到您的项目存储库,以便每个人都可以使用它来拥有相同的包版本。

答案 1 :(得分:0)

它将使用package.json确定要安装的软件包的版本,然后使用已解析版本创建package-lock.json文件(如果不存在),或覆盖现有文件。

重要的是,它实际上并没有安装任何东西,这与常规npm install(或别名npm i)不同。