在上一篇文章中,我们介绍了npm
,以及 package.json
和 pakage-lock.json
的所用。还有一个与npm
一样用的很多的包管理工具:yarn
。
在npm
的第五次大版本更新后,也就是5.X.X
之后,无论是从功能上还是从使用方法上,npm
和yarn
其实很相似了,所以我们这里不花过多的笔墨阐述谁优谁劣,而是理一理package.json
, pakage-lock.json
,yarn.lock
这三者之间的关系。
如果在一个项目中我们同时使用了npm
和yarn
(不建议这样做),npm
和yarn
安装的包都会被记录在package.json
中。但是他们会有各自的dependency lock
文件,npm
的是pakage-lock.json
, yarn
的是yarn.lock
。
如果你的项目中同时有pakage-lock.json
和yarn.lock
,你可以选择提交其中的任意的一个。如果你希望他人通过npm
来进行依赖包的安装,你应该选择提交pakage-lock.json
;如果你希望他人通过yarn
来进行依赖包的安装,你应该提交yarn.lock
。如果你希望他人自行决定是使用npm
还是yarn
,你应该提交pakage-lock.json
和yarn.lock
这两个文件,但是这有可能造成不同步的问题。
yarn
从1.7.0
版本开始,yarn import
命令可以利用pakage-lock.json
来生成依赖包,详见官方文档。