建置與工具
鎖定檔案(lockfile)
鎖定檔案(lockfile)是一份自動產生的清單,它把你的專案裝進來的每一段程式碼的確切版本都釘死——不只是你點名要的那些函式庫,連那些函式庫自己所需要的函式庫也一併釘住。它存在的全部意義,就是讓「安裝」這一步每一次、在每台機器上都得出完全相同的結果。
它填的是這樣一個缺口。你在清單檔案裡通常寫得比較寬鬆,類似「給我 4 點幾版的 lodash 都行」。這很方便,但也意味著兩個人在不同的日子去安裝,可能悄悄裝出略有差異的程式碼。鎖定檔案則把答案凍結下來:它明確記下你實際裝到的是 4.17.21、就是這一個、來自這個確切的來源。
鎖定檔案不用你手寫——你的套件管理器(package manager)會自動產生並更新它。你要做的,只是把它和程式碼一起提交進儲存庫。這樣隊友、建置伺服器、乃至未來的你,只用一條安裝指令,拿到的就是一字不差、完全一致的環境,而不是一句含糊的「應該差不多」。
// package-lock.json (excerpt)
"node_modules/lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57…"
}不是「lodash 4 點幾」,而是這個確切版本、來自這個確切位址——釘死了。
一定要提交它。鎖定檔案若沒進儲存庫,就等於白做了——大家又得各自猜版本。
又稱
另見