命令列工具
air-verse/air avatar
air-verse/air

air: Go 應用程式的命令列熱重載工具

Go 應用程式的即時重新載入。舊版 build.bin 欄位已棄用,並將在未來版本中刪除,因此以後更喜歡使用入口點形式。

23,976 個 Star924 個 ForkGoGPL-3.0
GitHub

秒懂

它是什麼?
air 是一個為 Go 開發者設計的命令列工具,可在程式碼變更後自動重建並重新啟動正在執行的應用程式。 本文聚焦其核心介面、部署邊界、版本訊號與實際核驗方式。
適合誰用?
air 的功能範圍在 README 中已說明:專注於開發過程中的重建與重啟。關於生產環境熱部署、具體效能數據或安全特性,文件並未提供相關資訊。
可以商用嗎?
可以,但有條件。GPL-3.0 是 copyleft 授權:如果你散布包含它的軟體,就必須以同一授權公開該軟體的原始碼。只在內部執行、不對外散布,則不會觸發這項義務。
還在維護嗎?
有在維護。儲存庫最近一次提交在 20 天前。
用什麼語言寫的?
主要是 Go(依據 GitHub 的語言統計)。

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

開源專案深度解析

這個工具是什麼

air 是以 Go 撰寫的命令列工具,用於在修改 Go 程式碼後自動重新建置並重新啟動正在執行的程式。使用方式是在專案根目錄執行 air,它會監聽檔案變更並在需要時重建。README 特別指出,這個工具與生產環境的熱部署無關,僅服務於開發階段。

air 第 1 章的這個邊界需要在實際專案中單獨檢查。先以 README 明列的 air、master 分支與目前素材記錄的版本訊號建立測試目錄,逐項對照輸入、輸出和錯誤處理。這樣能分辨文件承諾、範例行為與自己加入的整合程式,不會把倉庫統計或描述文字誤當成測試結果。

對 air-verse/air 第 1 章而言,最有價值的觀察是功能是否在既有依賴與目標平台上保持可追蹤。請保留實際命令的終端輸出、涉及的檔案路徑和失敗步驟;若 README 沒有說明某個預設值,就標記為未說明,回到 air-verse/air 的原始碼、Release 與 issue 查證,而不是自行補出保證。

air-verse-air-deep-analysis 第 1 節的具體核對點是 這個工具是什麼。請依文件中的專案名稱、命令、檔案或設定鍵檢查結果,記錄成功與失敗的差異;這個觀察只用來界定本節能力,不延伸成文件沒有承諾的結論。

安裝方式

README 建議使用 go install github.com/air-verse/air@latest 安裝,需要 Go 1.25 或更高版本,並提醒將 Go bin 目錄加入 PATH。另外也列出了 go get -tool、install.sh 腳本、goblin.run、Homebrew、Scoop、mise 以及 Docker/Podman 映像等安裝途徑。使用 Docker 時,映像是 cosmtrek/air。具體哪種方式適合你的環境,需要根據作業系統和套件管理習慣決定。

air 第 2 章的這個邊界需要在實際專案中單獨檢查。先以 README 明列的 air、master 分支與目前素材記錄的版本訊號建立測試目錄,逐項對照輸入、輸出和錯誤處理。這樣能分辨文件承諾、範例行為與自己加入的整合程式,不會把倉庫統計或描述文字誤當成測試結果。

對 air-verse/air 第 2 章而言,最有價值的觀察是功能是否在既有依賴與目標平台上保持可追蹤。請保留實際命令的終端輸出、涉及的檔案路徑和失敗步驟;若 README 沒有說明某個預設值,就標記為未說明,回到 air-verse/air 的原始碼、Release 與 issue 查證,而不是自行補出保證。

air-verse-air-deep-analysis 第 2 節的具體核對點是 安裝方式。請依文件中的專案名稱、命令、檔案或設定鍵檢查結果,記錄成功與失敗的差異;這個觀察只用來界定本節能力,不延伸成文件沒有承諾的結論。

基本用法

在專案目錄執行 air,它會先尋找目前目錄下的 .air.toml 設定檔;如果沒有找到,就使用預設設定。執行 air init 可以產生預設的 .air.toml 檔案,之後再次執行 air 就會自動讀取該設定。也可以透過 -c 參數明確指定設定檔。執行時,傳給 air 的參數會被傳遞給編譯出的二進位檔,例如 air bench 會執行 ./tmp/main bench。如果需要在參數中區分哪些給 air、哪些給程式,可以使用 -- 分隔。

air 第 3 章的這個邊界需要在實際專案中單獨檢查。先以 README 明列的 air、master 分支與目前素材記錄的版本訊號建立測試目錄,逐項對照輸入、輸出和錯誤處理。這樣能分辨文件承諾、範例行為與自己加入的整合程式,不會把倉庫統計或描述文字誤當成測試結果。

對 air-verse/air 第 3 章而言,最有價值的觀察是功能是否在既有依賴與目標平台上保持可追蹤。請保留實際命令的終端輸出、涉及的檔案路徑和失敗步驟;若 README 沒有說明某個預設值,就標記為未說明,回到 air-verse/air 的原始碼、Release 與 issue 查證,而不是自行補出保證。

air-verse-air-deep-analysis 第 3 節的具體核對點是 基本用法。請依文件中的專案名稱、命令、檔案或設定鍵檢查結果,記錄成功與失敗的差異;這個觀察只用來界定本節能力,不延伸成文件沒有承諾的結論。

設定檔的主要選項

air 的設定透過 .air.toml 檔案管理。它支援從命令列直接覆寫設定欄位,例如 air --build.cmd "go build -o bin/api cmd/run.go" --build.entrypoint "./bin/api" 可以無需設定檔直接指定建置命令和執行入口。設定中還可以設定啟動橫幅、環境檔載入(env_files),以及針對不同作業系統的建置覆寫(如 [build.windows])。README 也提到,舊欄位 build.bin 已被棄用,應該使用 build.entrypoint 來指定如何執行建置出的二進位檔。

air 第 4 章的這個邊界需要在實際專案中單獨檢查。先以 README 明列的 air、master 分支與目前素材記錄的版本訊號建立測試目錄,逐項對照輸入、輸出和錯誤處理。這樣能分辨文件承諾、範例行為與自己加入的整合程式,不會把倉庫統計或描述文字誤當成測試結果。

對 air-verse/air 第 4 章而言,最有價值的觀察是功能是否在既有依賴與目標平台上保持可追蹤。請保留實際命令的終端輸出、涉及的檔案路徑和失敗步驟;若 README 沒有說明某個預設值,就標記為未說明,回到 air-verse/air 的原始碼、Release 與 issue 查證,而不是自行補出保證。

air-verse-air-deep-analysis 第 4 節的具體核對點是 設定檔的主要選項。請依文件中的專案名稱、命令、檔案或設定鍵檢查結果,記錄成功與失敗的差異;這個觀察只用來界定本節能力,不延伸成文件沒有承諾的結論。

監聽規則和代理功能

除了標準的建置流程,air 支援透過 [[build.rules]] 定義特殊的監聽規則。例如,當前端資源或 templ 檔案變更時,可以執行一個命令(如 npm run build 或 templ generate)而不觸發完整重建。規則支援 include_dir、include_ext、include_file、exclude_regex 和 delay(去抖,預設 1000 毫秒)。另外,air 的 proxy 功能可以在瀏覽器中開啟一個代理連接埠,並在每次成功重建後自動重新整理頁面。啟用 proxy 需要 HTML 包含 </body> 標籤,且被修改的檔案需要被監聽規則覆蓋。如果應用啟動較慢,可以調整 app_start_timeout 參數。

air 第 5 章的這個邊界需要在實際專案中單獨檢查。先以 README 明列的 air、master 分支與目前素材記錄的版本訊號建立測試目錄,逐項對照輸入、輸出和錯誤處理。這樣能分辨文件承諾、範例行為與自己加入的整合程式,不會把倉庫統計或描述文字誤當成測試結果。

對 air-verse/air 第 5 章而言,最有價值的觀察是功能是否在既有依賴與目標平台上保持可追蹤。請保留實際命令的終端輸出、涉及的檔案路徑和失敗步驟;若 README 沒有說明某個預設值,就標記為未說明,回到 air-verse/air 的原始碼、Release 與 issue 查證,而不是自行補出保證。

air-verse-air-deep-analysis 第 5 節的具體核對點是 監聽規則和代理功能。請依文件中的專案名稱、命令、檔案或設定鍵檢查結果,記錄成功與失敗的差異;這個觀察只用來界定本節能力,不延伸成文件沒有承諾的結論。

Docker 使用方式

官方提供了 cosmtrek/air 映像。README 給出了 docker run 的範例命令,其中需要設定容器內專案路徑(-w)、掛載目前目錄、以及對應連接埠。另外也提供了 shell 函式封裝和 Docker Compose 設定範例。如果不想使用 air 映像,也可以在 Dockerfile 中透過 go install 安裝 air,然後使用 docker-compose 掛載程式碼目錄。無論哪種方式,檔案掛載是實現熱重載的關鍵。

air 第 6 章的這個邊界需要在實際專案中單獨檢查。先以 README 明列的 air、master 分支與目前素材記錄的版本訊號建立測試目錄,逐項對照輸入、輸出和錯誤處理。這樣能分辨文件承諾、範例行為與自己加入的整合程式,不會把倉庫統計或描述文字誤當成測試結果。

對 air-verse/air 第 6 章而言,最有價值的觀察是功能是否在既有依賴與目標平台上保持可追蹤。請保留實際命令的終端輸出、涉及的檔案路徑和失敗步驟;若 README 沒有說明某個預設值,就標記為未說明,回到 air-verse/air 的原始碼、Release 與 issue 查證,而不是自行補出保證。

air-verse-air-deep-analysis 第 6 節的具體核對點是 Docker 使用方式。請依文件中的專案名稱、命令、檔案或設定鍵檢查結果,記錄成功與失敗的差異;這個觀察只用來界定本節能力,不延伸成文件沒有承諾的結論。

開發、動機和授權

開發 air 需要 Go 1.25+,專案使用 make ci 安裝依賴並 make install 安裝。根據 README,作者在開發 Go 網站時發現 gin 框架缺少熱重載功能,嘗試了 fresh 後覺得不夠靈活,因此重寫並建立了 air。專案採用 GPL-3.0 授權。該授權允許複製、散布和修改軟體,但要求修改版本在散布時保持相同的授權條款。授權文字本身沒有涉及安全保證、效能擔保或商業支援方面的內容。

air 第 7 章的這個邊界需要在實際專案中單獨檢查。先以 README 明列的 air、master 分支與目前素材記錄的版本訊號建立測試目錄,逐項對照輸入、輸出和錯誤處理。這樣能分辨文件承諾、範例行為與自己加入的整合程式,不會把倉庫統計或描述文字誤當成測試結果。

對 air-verse/air 第 7 章而言,最有價值的觀察是功能是否在既有依賴與目標平台上保持可追蹤。請保留實際命令的終端輸出、涉及的檔案路徑和失敗步驟;若 README 沒有說明某個預設值,就標記為未說明,回到 air-verse/air 的原始碼、Release 與 issue 查證,而不是自行補出保證。

air-verse-air-deep-analysis 第 7 節的具體核對點是 開發、動機和授權。請依文件中的專案名稱、命令、檔案或設定鍵檢查結果,記錄成功與失敗的差異;這個觀察只用來界定本節能力,不延伸成文件沒有承諾的結論。

編輯結論

air 的功能範圍在 README 中已說明:專注於開發過程中的重建與重啟。關於生產環境熱部署、具體效能數據或安全特性,文件並未提供相關資訊。 適合已能提供相容執行環境、願意依 air-verse/air README 逐項核對的人;不適合把文件摘要當成生產承諾的團隊。先在隔離目錄依專案自己的入口跑最小案例,檢查 air 的實際輸出、錯誤訊息與設定檔,再決定是否接入正式流程。

官方來源

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

社群筆記