理一理 npm, yarn, package.json, pakage-lock.json, yarn.lock 之间的关系 (二)

本文转载自我的个人博客,原文请移步

在上一篇文章中,我们介绍了npm,以及 package.jsonpakage-lock.json的所用。还有一个与npm一样用的很多的包管理工具:yarn

npm的第五次大版本更新后,也就是5.X.X之后,无论是从功能上还是从使用方法上,npmyarn其实很相似了,所以我们这里不花过多的笔墨阐述谁优谁劣,而是理一理package.jsonpakage-lock.jsonyarn.lock 这三者之间的关系。

如果在一个项目中我们同时使用了npmyarn(不建议这样做),npmyarn安装的包都会被记录在package.json中。但是他们会有各自的dependency lock文件,npm的是pakage-lock.jsonyarn的是yarn.lock

如果你的项目中同时有pakage-lock.jsonyarn.lock,你可以选择提交其中的任意的一个。如果你希望他人通过npm来进行依赖包的安装,你应该选择提交pakage-lock.json;如果你希望他人通过yarn来进行依赖包的安装,你应该提交yarn.lock。如果你希望他人自行决定是使用npm还是yarn,你应该提交pakage-lock.jsonyarn.lock这两个文件,但是这有可能造成不同步的问题。

yarn1.7.0版本开始,yarn import命令可以利用pakage-lock.json来生成依赖包,详见官方文档。