Bun

鎖定檔

執行 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 中已正規化的 cpuos 值儲存在 lockfile 中,連同已解析的套件。它會略過在執行階段下載、解壓縮和安裝已針對目前目標停用的套件。這表示即使最終安裝的套件有變更,lockfile 也不會在平台/架構之間變更。

Bun 的 lockfile 儲存什麼?

套件、這些套件的元資料、提升的安裝順序、每個套件的相依性、這些相依性解析為哪些套件、完整性雜湊值(如果有的話)、每個套件解析為什麼,以及哪個版本(或等效版本)。

為什麼 Bun 的 lockfile 很快速?

它對所有資料使用線性陣列。套件會由自動遞增的整數 ID 或套件名稱的雜湊值參照。超過 8 個字元的字串會進行去重。在儲存到磁碟之前,lockfile 會透過遍歷套件樹狀結構並按相依性順序複製套件來進行垃圾回收和確定性處理。

我可以選擇退出嗎?

要在不建立 lockfile 的情況下安裝

bun install --no-save

要在 bun.lockb 之外安裝 Yarn lockfile。

CLI 旗標
bunfig.toml
CLI 旗標
bun install --yarn
bunfig.toml
[install.lockfile]
# whether to save a non-Bun lockfile alongside bun.lockb
# only "yarn" is supported
print = "yarn"

設定 lockfile