package.json與package-lock.json文件的作用
package.json文件記錄你項目中所需要的所有模塊朗兵。當(dāng)你執(zhí)行npm install的時候,node會先從package.json文件中讀取所有dependencies信息柿隙,然后根據(jù)dependencies中的信息與node_modules中的模塊進行對比叶洞,沒有的直接下載,已有的檢查更新(最新版本的nodejs不會更新禀崖,因為有package-lock.json文件衩辟,下面再說)。另外波附,package.json文件只記錄你通過npm install方式安裝的模塊信息艺晴,而這些模塊所依賴的其他子模塊的信息不會記錄。
package-lock.json文件鎖定所有模塊的版本號掸屡,包括主模塊和所有依賴子模塊封寞。當(dāng)你執(zhí)行npm install的時候,node從package.json文件讀取模塊名稱仅财,從package-lock.json文件中獲取版本號狈究,然后進行下載或者更新。
因此盏求,正因為有了package-lock.json文件鎖定版本號抖锥,所以當(dāng)你執(zhí)行npm install的時候,node不會自動更新package.json文件中的模塊风喇,必須用npm install packagename(自動更新小版本號)或者npm install packagename@x.x.x(指定版本號)來進行安裝才會更新宁改,package-lock.json文件中的版本號也會隨著更新。
附:當(dāng)package.json與package-lock.json都不存在魂莫,執(zhí)行"npm install"時还蹲,node會重新生成package-lock.json文件,然后把node_modules中的模塊信息全部記入package-lock.json文件,但不會生成package.json文件谜喊,此時潭兽,你可以通過"npm init --yes"來生成package.json文件
---------------------