簡單理解: XYZ 的格式
對應為: 主版本號.次版本號.修訂號,版本號遞增規則如下:
主版本號:當你做了不兼容的 API 修改,
次版本號:當你做了向下兼容的功能性新增,
修訂號:當你做了向下兼容的問題修正。
假設我們創建了一個新項目,它將使用express。 在運行npm init之后,在撰寫本項目時,最新的express版本是4.15.4。 (默認情況下,npm 將安裝最新版本)
因此在package.json中,"express":"^ 4.15.4"被添加作為依賴項。 假設明天,express的維護者會發布一個 bug 修復,所以最新版本變成了4.15.5。 然后,如果有人想要為我的項目做貢獻,他們會克隆它,然后運行 npm install, 因為4.15.5是一個更高版本的主要版本,這是為他們安裝的。 我們都有express依賴,但我們有兩個不同的版本。 理論上,它們應該還是兼容的,但是也許這個 bug 會影響我們正在使用的功能,而我們的應用程序在使用Express版本4.15.4與4.15.5進行比較時會產生不同的結果.
而package-lock.json的作用就是用來保證我們的應用程序依賴之間的關系是一致的, 兼容的.
當不存在package-lock.json文件時,使用npm install時,會自動生成這個文件。當存在這個文件時,使用npm install安裝,會安裝package-lock.json里指定版本的插件,而且相比沒有package-lock.json文件時,安裝速度會快很多。因為package-lock.json文件里已經存在插件的版本、下載地址、整個node_modules的結構等信息。
當存在package-lock.json文件時,每次npm install安裝就會安裝package-lock.json里對應插件的版本。這樣同一份package-lock.json文件,大家安裝的插件版本一致。
如果某個插件版本變更。又不想刪除package-lock.json文件,重新生成。方法是:npm install plugin@version,及重新安裝這個插件,並指定插件的版本,這樣,package.json和package-lock.json會自動更新。當然,也可以直接修改package-lock.json文件,這樣npm install時,也會安裝修改后的版本。但是如果只修改package.json,不修改package-lock.json,npm install還是會安裝package-lock.json里的插件版本。