命令列工具
jdx/aube avatar
jdx/aube

aube:把依賴檢查放進每次 Node.js 腳本執行

一個快速的 Node.js 套件管理器。重複測試指令的運行速度比 pnpm 快 31 倍,比 Bun 快 5 倍。

1,999 個 Star62 個 ForkRustMIT

秒懂

它是什麼?
aube 是以 Rust 編寫的 Node.js 套件管理員,在每次執行腳本前檢查依賴是否最新,可讀寫現有鎖檔案,並聲稱是唯一帶有生命週期腳本監獄的套件管理員。本文基於 README 整理其實際內容。
適合誰用?
aube 的 README 對速度和安全性提出了大膽聲明,但這些是專案自己的斷言。MIT 授權不附帶任何擔保,倉庫元資料顯示該專案有 1803 顆星和 2 個未關閉問題。
可以商用嗎?
可以。MIT 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
還在維護嗎?
有在維護。儲存庫最近一次提交在 2 天前。
用什麼語言寫的?
主要是 Rust(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月14日)與我們的分析,不構成法律意見。

開源專案深度解析

核心承諾:永不忘記安裝

aube 是一款用 Rust 編寫的 Node.js 套件管理員。README 的標語是「永不忘記安裝」,背後的機制是:當你透過 aube 執行腳本時,它會檢查 node_modules 是否與目前的 package.json 和鎖檔案匹配,如果依賴缺失或過期就先安裝,否則直接執行腳本。aube 在法語中意為「黎明」,發音為 /ob/,類似「ohb」。該專案由 entire.io 和 37signals 贊助,完整贊助商清單可從 jdx.dev 的連結查看。文件位於 aube.jdx.dev。

就 aube 而言,這段資訊要和 jdx/aube 的 README 一起閱讀。第 1 個觀察點可用專案文件列出的入口核對:不要把 README 沒有承諾的作業系統、效能或相容性推論成保證。若要把它放進既有流程,應先辨認這一段描述的是使用者介面、命令列入口、伺服器端點還是資料格式,因為不同層次的問題會留下不同的故障跡象。記錄執行時使用的版本與輸入,對照 README 的預期結果;若實際輸出沒有出現文件提到的訊息,就先查設定與依賴,不要用猜測補齊行為。

效能與鎖檔案相容性聲明

README 基於文件中的基準測試提出了具體效能聲明:暖安裝比 pnpm 快約 7 倍,比 Bun 快約 3 倍;重複測試命令比 pnpm 快最多 48 倍,比 Bun 快最多 4 倍。這些數字是專案自己的基準測試,本文未獨立驗證。aube 還能就地讀寫多種現有鎖檔案格式:pnpm-lock.yaml v9(由 pnpm 9-11 生成)、package-lock.json v2/v3、npm-shrinkwrap.json、yarn.lock(經典版和 berry 版)以及 bun.lock。對於沒有鎖檔案的新專案,它會建立 aube-lock.yaml。README 指出,較舊的 pnpm v5/v6 鎖檔案應先升級再切換,Yarn PnP 專案需要先遷移到 node_modules linker。

就 aube 而言,這段資訊要和 jdx/aube 的 README 一起閱讀。第 2 個觀察點可用專案文件列出的入口核對:不要把 README 沒有承諾的作業系統、效能或相容性推論成保證。若要把它放進既有流程,應先辨認這一段描述的是使用者介面、命令列入口、伺服器端點還是資料格式,因為不同層次的問題會留下不同的故障跡象。記錄執行時使用的版本與輸入,對照 README 的預期結果;若實際輸出沒有出現文件提到的訊息,就先查設定與依賴,不要用猜測補齊行為。

安全預設值與生命週期腳本監獄

README 聲稱 aube 擁有「任何 Node.js 套件管理員中最嚴格的安全預設值」,並且是唯一帶有生命週期腳本監獄的套件管理員。開箱即用,它會阻止異常的傳遞依賴,生命週期腳本需等待批准,信任降級在解析時失敗,新發布的套件有 24 小時冷卻視窗。設定 paranoid: true 會新增建置監獄,並將軟性門檻變成硬性失敗。啟用後,生命週期腳本監獄會在清理後的環境和臨時 HOME 下執行已批准的建置腳本。該監獄目前預設關閉,但計畫在下個主要版本中預設開啟。README 沒有提供威脅模型或安全稽核,因此這些聲明應視為專案的描述,而非獨立保證。

就 aube 而言,這段資訊要和 jdx/aube 的 README 一起閱讀。第 3 個觀察點可用專案文件列出的入口核對:不要把 README 沒有承諾的作業系統、效能或相容性推論成保證。若要把它放進既有流程,應先辨認這一段描述的是使用者介面、命令列入口、伺服器端點還是資料格式,因為不同層次的問題會留下不同的故障跡象。記錄執行時使用的版本與輸入,對照 README 的預期結果;若實際輸出沒有出現文件提到的訊息,就先查設定與依賴,不要用猜測補齊行為。

安裝與 Node.js 版本處理

建議的安裝路徑是透過 mise:mise use -g aube。在專案內,你可以用 mise use aube 固定 aube 版本。aube 也發布在 npm 上,套件名為 @endevco/aube,README 展示了 npm install -g --ignore-scripts=false @endevco/aube 和 npx --ignore-scripts=false @endevco/aube --version;該旗標是必需的,因為 npm 套件使用安裝腳本取得原生二進位。Homebrew 使用者可以透過 jdx tap 安裝:brew install jdx/tap/aube。aube 自身可以切換專案的 Node.js 版本:如果專案透過 package.json(devEngines.runtime)、.nvmrc 或 .node-version 固定 Node 版本,那麼透過 aube 執行的所有腳本和二進位都會使用該版本。當固定版本缺失時,aube 會優先委託 mise 安裝(共享 Node 儲存),否則從 nodejs.org 下載。Shell 啟用可將 node、npm、npx、pnpm、pnpx、yarn 和 yarnpkg 路由到 aube,命令如 eval "$(aube activate zsh)"。

就 aube 而言,這段資訊要和 jdx/aube 的 README 一起閱讀。第 4 個觀察點可用專案文件列出的入口核對:不要把 README 沒有承諾的作業系統、效能或相容性推論成保證。若要把它放進既有流程,應先辨認這一段描述的是使用者介面、命令列入口、伺服器端點還是資料格式,因為不同層次的問題會留下不同的故障跡象。記錄執行時使用的版本與輸入,對照 README 的預期結果;若實際輸出沒有出現文件提到的訊息,就先查設定與依賴,不要用猜測補齊行為。

日常用法:執行、安裝與 aubr/aubx 簡寫

使用 aube 的主要方式是直接執行你想要的腳本。aubr 是 aube run 的簡寫,aubr test 會在依賴過期或缺失時先安裝,再執行測試腳本。aube test 和 aube exec vitest 的工作方式類似,aubx 是 aube dlx 的簡寫,用於一次性工具。日常工作中通常不需要單獨的 aube install;它適用於首次本機設定、更新鎖檔案、Docker 層、生產環境安裝或 CI 流程。對於 CI,aube ci 會刪除 node_modules,驗證鎖檔案是否最新,然後進行乾淨安裝。還有 aube install --lockfile-only 和 aube install --prod。工作區支援 workspace: 協定,並可讀寫 pnpm-workspace.yaml 或 aube-workspace.yaml。README 列出了常用命令:aube add、remove、update、list、why、outdated、audit、pack、publish、link、unlink、config get registry、store path、store prune 等。

就 aube 而言,這段資訊要和 jdx/aube 的 README 一起閱讀。第 5 個觀察點可用專案文件列出的入口核對:不要把 README 沒有承諾的作業系統、效能或相容性推論成保證。若要把它放進既有流程,應先辨認這一段描述的是使用者介面、命令列入口、伺服器端點還是資料格式,因為不同層次的問題會留下不同的故障跡象。記錄執行時使用的版本與輸入,對照 README 的預期結果;若實際輸出沒有出現文件提到的訊息,就先查設定與依賴,不要用猜測補齊行為。

依賴腳本、套件佈局與命令面

aube 預設跳過依賴的生命週期腳本,除非套件在內建的受信任依賴清單中。你可以用 aube approve-builds 批准需要建置腳本的套件,用 aube ignored-builds 檢視被跳過的套件。對於已批准的套件,jailBuilds: true 會在清理後的環境和臨時 HOME 下執行生命週期腳本,jailBuildPermissions 或 jailBuildExclusions 中的套件萬用字元可以允許特定的環境變數、路徑、網路或完全退出。套件佈局是隔離的:套件透過 node_modules/.aube/ 連結,套件檔案儲存在 $XDG_DATA_HOME/aube/store/(預設 ~/.local/share/aube/store/)中一次。這樣多個專案可以共享套件檔案並減少磁碟佔用。aube 還匹配 pnpm 11 的執行時表面:aube runtime set node <version> 和 aube runtime list,aube node 透過該解析器執行 Node。部分 pnpm 命令被有意排除:setup 和 self-update 屬於 mise 等工具,registry 帳戶輔助命令如 whoami、token、owner、search、pkg 和 set-script 是相容性存根,指向 npm 命令。

就 aube 而言,這段資訊要和 jdx/aube 的 README 一起閱讀。第 6 個觀察點可用專案文件列出的入口核對:不要把 README 沒有承諾的作業系統、效能或相容性推論成保證。若要把它放進既有流程,應先辨認這一段描述的是使用者介面、命令列入口、伺服器端點還是資料格式,因為不同層次的問題會留下不同的故障跡象。記錄執行時使用的版本與輸入,對照 README 的預期結果;若實際輸出沒有出現文件提到的訊息,就先查設定與依賴,不要用猜測補齊行為。

授權與專案元資料

該專案採用 MIT 授權,版權歸 jdx.dev(2026)。授權授予使用、複製、修改、合併、發布、分發、再授權和出售軟體副本的權利,並宣告軟體按「原樣」提供,不附帶任何形式的擔保。授權文字未提及安全保證、支援或維護承諾。倉庫元資料顯示 1803 顆星、55 個分支、2 個未關閉問題,且專案未歸檔。README 感謝 Namespace 提供 CI,並將 jdx 列為建置者。專案的文件和基準測試連結均可在 README 中找到。

就 aube 而言,這段資訊要和 jdx/aube 的 README 一起閱讀。第 7 個觀察點可用專案文件列出的入口核對:不要把 README 沒有承諾的作業系統、效能或相容性推論成保證。若要把它放進既有流程,應先辨認這一段描述的是使用者介面、命令列入口、伺服器端點還是資料格式,因為不同層次的問題會留下不同的故障跡象。記錄執行時使用的版本與輸入,對照 README 的預期結果;若實際輸出沒有出現文件提到的訊息,就先查設定與依賴,不要用猜測補齊行為。

aube 的文件入口與採用檢查

採用前可在 jdx/aube 目錄依 README 的實際入口做小型檢查:先固定目前版本,再執行文件中的安裝或啟動命令,觀察它指定的輸入、輸出與錯誤訊息。aube 的 README 若未說明某平台、資料格式或部署方式,這一項就應列為待確認條件。

編輯結論

aube 的 README 對速度和安全性提出了大膽聲明,但這些是專案自己的斷言。MIT 授權不附帶任何擔保,倉庫元資料顯示該專案有 1803 顆星和 2 個未關閉問題。效能數據是否成立,需要參考連結的基準測試進行核實。 aube 適合能接受上述文件邊界、並願意按 README 指定入口驗證的使用者;不適合把未列出的能力當成現成承諾。

官方來源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社群筆記

社群筆記