npm@5已经发布,它有一个新的功能包锁。Json文件(NPM安装后),这让我感到困惑。我想知道,这个文件的效果是什么?


当前回答

package-lock。json:它包含应用程序当前安装的确切版本细节。

其他回答

包锁的目标。Json文件是为了跟踪安装的每个包的确切版本,以便即使包由其维护者更新,产品也可以100%以相同的方式再现。

这解决了一个非常具体的问题。jsonleft没有解决。在包中。Json,你可以设置你想升级到哪个版本(补丁或小),使用semver符号。

还有一件重要的事情需要提及,那就是包锁文件带来的安全性改进。因为它保存了所有包的哈希值,如果有人篡改了公共npm注册表,甚至没有改变包本身的版本就改变了包的源代码,包锁文件就会检测到。

npm会自动创建这个文件,并使用它来跟踪你的包安装情况 并且更好地管理项目依赖项的状态和历史。你 不应该改变这个文件的内容。

package-lock。json:它包含应用程序当前安装的确切版本细节。

这是npm的一个非常重要的改进:保证每个包的版本完全相同。

如何确保在不同的时间、不同的环境中使用相同的包构建项目?比方说,您可以在包中使用^1.2.3。Json,或者你的一些依赖项正在使用这种方式,但是你如何确保每次NPM安装都在你的开发机器和构建服务器中获得相同的版本呢?package-lock。Json将确保这一点。

NPM install会重新生成锁文件。 在构建服务器或部署服务器上,执行npm ci (它将从锁文件中读取,并安装整个包树)