概念
1:package.json ①:npm啟動開始得文件,可以用來啟動打包項目等命令的配置 ②:管理項目的包文件,記錄項目用到的包及版本號(dependencies生產依賴/devDependencies開發依賴) 2:package.lock.json package.json的dependencies生產依賴包管理文件
解決的問題
1:有了package.json管理包了,為何還要package.lock.json? 答案: ①:解決不同包引用同一個包,包下載冗余 ②:鎖定包依賴關系,加快包查找下載速度
詳細
1:解決不同包引用同一個包,包下載冗余 早期的包沒有package.lock的時候,所有的包下載是樹形結構,需要哪個包就直接下載,包體積很臃腫,很多相同版本的包,被多次下載,package.lock的出現,解決了這個問題: 下載包的時候,會從頂至下的遞歸尋找,是否已經存在,如果存在,直接引用,並且記錄在package.lock中,不存在則在當前node_moudel目錄下下載,也記錄在package.lock中。這樣重復的包就不會反復下載。 2:鎖定包依賴關系,加快包查找下載速度 1中說過,包存在與否都記錄在package.lock中,是一個樹形結構,對應包依賴的結構,當我們提交package.lock文件,協同項目開發的時候,另一個人下載了package.lock文件,執行npm install會從package.lock中讀取依賴關系,下載相對應的依賴包,而不再執行package.json中的包依賴下載,省去了遞歸查找是否有當前的依賴。