Vue?package-lock.json的作用及說明
vue package-lock.json的作用
package-lock.json有什么作用呢?
簡單理解就是鎖定dependencies的版本號。
一般來說前端的項目都有一個package.json文件管理依賴的版本號,在package.json文件里我們可以看到依賴的版本號前面一半有^和~這些符號。
- ^:鎖定大版本號,比如是^6.2.2,會匹配所有6.x.x的版本,更新的時候會下載最新的版本號
- ~:鎖定前面兩個版本號,比如是^6.2.2,會匹配所有6.2.x的版本,更新的時候會下載最新的版本號
- *:安裝最新的版本號。
不同的下載時間、npm下載源不一樣或者不同機器,下載得到的nodejs依賴包有可能不一樣。
所以這時候package-lock.json的作用就出來了。
它就是固定當前的版本,確保你安裝的包不會因為在新的機器上或者新的
下載源下載依賴包時不一致,這在開發(fā)、部署或者多人協(xié)作時會減少很多不必要的麻煩。
我們舉個例子
當前測試的project的依賴如下
"devDependencies": { "dayjs": "~1.9.4", "file-saver": "^1.2.0", "lodash": "*" },
一般來說新建的項目是沒有package-lock.json這個文件,執(zhí)行npm install時候它會自動生成。
執(zhí)行npm install后,我們?nèi)ode-modules目錄看下這三個包的版本號。
"dayjs": "1.9.8", "file-saver": "1.3.8", "lodash": "4.17.21"
再看下生成的package-lock.json文件
"dependencies": { "dayjs": { "version": "1.9.8", "dev": true }, "file-saver": { "version": "1.3.8", "dev": true }, "lodash": { "version": "4.17.21", "dev": true } }
node_module依賴包的版本和package-lock.json的版本號是一樣的。
dayjs匹配到了1.9.x的最新版本,file-saver匹配到了1.x.x的最新版本,lodash匹配到了最新的版本。
當我們需要去更新依賴包的版本時,可以通過執(zhí)行npm install xxx@x.x.x實現(xiàn),package-lock.json也會隨之更新。
我本地的npm版本是6.10.2,在package.json中直接修改版本號,然后npm install,也可以實現(xiàn)依賴包的版本和package-lock.json更新。
網(wǎng)上有說法是5版本后不支持這種改法了。
如果下載依賴用的是yarn install,那用的就是yarn.lock文件。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。