執行 bun install
會建立一個名為 bun.lockb
的二進位鎖定檔。
為什麼它是二進位的?
簡而言之:效能。Bun 的鎖定檔儲存和載入的速度非常快,而且儲存的資料比一般鎖定檔中的資料多很多。
如何檢查 Bun 的鎖定檔?
執行 bun install -y
以產生一個與 Yarn 相容的 yarn.lock
(v1),可以更輕鬆地檢查。
如何使用 git diff
比較 Bun 的鎖定檔?
將下列內容新增到本機或全域的 .gitattributes
檔案中
*.lockb binary diff=lockb
然後使用下列指令將下列內容新增到本機 git 設定中
git config diff.lockb.textconv bun
git config diff.lockb.binary true
或使用 --global
選項將下列內容新增到全域 git 設定(系統範圍)中
git config --global diff.lockb.textconv bun
git config --global diff.lockb.binary true
為什麼這會奏效
textconv
告訴 git 在比較差異之前,對檔案執行bun
binary
告訴 git 將檔案視為二進位檔案(因此它不會嘗試逐行比較差異)
對鎖定檔執行 bun
會列印出人類可讀的差異。因此我們只需要告訴 git
在比較差異之前,對鎖定檔執行 bun
即可。
特定於平台的相依性?
Bun 會將 npm 中已正規化的 cpu
和 os
值儲存在 lockfile 中,連同已解析的套件。它會略過在執行階段下載、解壓縮和安裝已針對目前目標停用的套件。這表示即使最終安裝的套件有變更,lockfile 也不會在平台/架構之間變更。
Bun 的 lockfile 儲存什麼?
套件、這些套件的元資料、提升的安裝順序、每個套件的相依性、這些相依性解析為哪些套件、完整性雜湊值(如果有的話)、每個套件解析為什麼,以及哪個版本(或等效版本)。
為什麼 Bun 的 lockfile 很快速?
它對所有資料使用線性陣列。套件會由自動遞增的整數 ID 或套件名稱的雜湊值參照。超過 8 個字元的字串會進行去重。在儲存到磁碟之前,lockfile 會透過遍歷套件樹狀結構並按相依性順序複製套件來進行垃圾回收和確定性處理。
我可以選擇退出嗎?
要在不建立 lockfile 的情況下安裝
bun install --no-save
要在 bun.lockb
之外安裝 Yarn lockfile。
bun install --yarn
[install.lockfile]
# whether to save a non-Bun lockfile alongside bun.lockb
# only "yarn" is supported
print = "yarn"
設定 lockfile