在上一篇文章中,我們介紹了npm
,以及 package.json
和 pakage-lock.json
的所用。還有一個(gè)與npm
一樣用的很多的包管理工具:yarn
。
在npm
的第五次大版本更新后,也就是5.X.X
之后,無論是從功能上還是從使用方法上,npm
和yarn
其實(shí)很相似了,所以我們這里不花過多的筆墨闡述誰優(yōu)誰劣,而是理一理package.json
, pakage-lock.json
,yarn.lock
這三者之間的關(guān)系。
如果在一個(gè)項(xiàng)目中我們同時(shí)使用了npm
和yarn
(不建議這樣做),npm
和yarn
安裝的包都會(huì)被記錄在package.json
中。但是他們會(huì)有各自的dependency lock
文件,npm
的是pakage-lock.json
, yarn
的是yarn.lock
。
如果你的項(xiàng)目中同時(shí)有pakage-lock.json
和yarn.lock
,你可以選擇提交其中的任意的一個(gè)。如果你希望他人通過npm
來進(jìn)行依賴包的安裝,你應(yīng)該選擇提交pakage-lock.json
;如果你希望他人通過yarn
來進(jìn)行依賴包的安裝,你應(yīng)該提交yarn.lock
。如果你希望他人自行決定是使用npm
還是yarn
,你應(yīng)該提交pakage-lock.json
和yarn.lock
這兩個(gè)文件,但是這有可能造成不同步的問題。
yarn
從1.7.0
版本開始,yarn import
命令可以利用pakage-lock.json
來生成依賴包,詳見官方文檔。