Skip to content

v1.55.1

@CarlLee1983 CarlLee1983 tagged this 13 Aug 14:43
v1.55.0 的檢查在設計上永遠不可能失敗,npm 因此完全不顯示它。以
docker run --rm node:22 對已發布套件實測:npm install -g 只印出
"added 131 packages",接著 dbcli --version 得到
/usr/bin/env: 'bun': No such file or directory、exit 127 —— 正是這個
檢查要防止的體驗。

兩個原因疊在一起:npm 預設隱藏 lifecycle script 輸出,只有腳本失敗時
才顯示(訊息本身是對的,--foreground-scripts 看得到);而 postinstall
指令結尾的 || exit 0 又把任何 exit code 吞掉。

- 拿掉 || exit 0
- 缺 Bun 且 npm_config_global 為 true 時 exit 1:全域安裝的目的就是一個
  能跑的 dbcli,失敗時原因會被印出,npm 也會把 bin 回滾,不再留下死掉的
  執行檔(實測 command -v dbcli 找不到)
- 依賴安裝維持 exit 0 —— 那是 ./agent-core 消費者,不需要 Bun

runtime-contract.test.ts 釘住兩種結果,並斷言 postinstall 字串不得再含
exit 0:一個不可能失敗的檢查與一個通過的檢查無法區分。
Assets 2
Loading