swc-node:不做型別檢查的 TypeScript 即時轉換器
更快的 ts-node,無需類型檢查。詳細資訊:@swc-node/core 基準測試將 RxJS AjaxObservable.ts 轉換為 ES2015 和 CommonJS JavaScript。
秒懂
- 它是什麼?
- swc-node 以 @swc-node/register、core 和 jest 套件,把執行期轉換、測試轉換與效能路徑拆開。
- 適合誰用?
- 適合需要 swc-node 以 @swc-node/register、core 和 jest 套件,把執行期轉換、測試轉換與效能路徑拆開。 的讀者,不適合把 README 宣稱直接當成生產保證的人。
- 可以商用嗎?
- 可以。MIT 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
- 還在維護嗎?
- 有在維護。儲存庫最近一次提交在 3 天前。
- 用什麼語言寫的?
- 主要是 TypeScript(依據 GitHub 的語言統計)。
以上回答依據專案的 GitHub 資料(最近同步於 2026年9月14日)與我們的分析,不構成法律意見。
開源專案深度解析
register 的執行方式
README 提供 @swc-node/register 的 CommonJS、esm-register-next、esm-register 與 deprecated loader 命令,並指出 ESM 可加 --enable-source-maps。SWCRC=true 會載入 .swcrc;TS_NODE_PROJECT=null 可讓 shebang 忽略 tsconfig.json。core 的同步基準比較 esbuild、typescript、babel,平行基準則受 UV_THREADPOOL_SIZE=11 影響。 register 的執行方式 是這篇文章的觀察焦點。本文只根據專案 README 與倉庫資料整理,命令和檔名保留原樣,方便讀者對照來源。選型時要把這些明示的入口放回自己的建置、部署與權限條件中,未知項目不當成預設行為。 對 swc-node 而言,這個區分直接影響使用者如何安排工作:先確認入口能否在現有工具鏈運作,再檢查輸出是否符合下一個步驟,而不是把描述性的宣稱當成保證。第 1 節也要留意版本、檔案位置與命令參數的關係,因為少一個旗標或換錯執行環境,結果就可能不再代表 README 所描述的路徑。若來源沒有列出相容矩陣、服務承諾或完整錯誤行為,本文保留這個空白,讓讀者知道需要補做哪一項專案級核對。實際閱讀時,可把 node -r @swc-node/register script.ts 或相關檔案放進隔離副本,記錄終端輸出、產物與失敗位置,再與 swc-node 的 README 段落逐項比對。這是針對本專案的檢查方式,不是抽象的通用清單。
ESM 入口與 Node 版本
README 提供 @swc-node/register 的 CommonJS、esm-register-next、esm-register 與 deprecated loader 命令,並指出 ESM 可加 --enable-source-maps。SWCRC=true 會載入 .swcrc;TS_NODE_PROJECT=null 可讓 shebang 忽略 tsconfig.json。core 的同步基準比較 esbuild、typescript、babel,平行基準則受 UV_THREADPOOL_SIZE=11 影響。 ESM 入口與 Node 版本 是這篇文章的觀察焦點。本文只根據專案 README 與倉庫資料整理,命令和檔名保留原樣,方便讀者對照來源。選型時要把這些明示的入口放回自己的建置、部署與權限條件中,未知項目不當成預設行為。 對 swc-node 而言,這個區分直接影響使用者如何安排工作:先確認入口能否在現有工具鏈運作,再檢查輸出是否符合下一個步驟,而不是把描述性的宣稱當成保證。第 2 節也要留意版本、檔案位置與命令參數的關係,因為少一個旗標或換錯執行環境,結果就可能不再代表 README 所描述的路徑。若來源沒有列出相容矩陣、服務承諾或完整錯誤行為,本文保留這個空白,讓讀者知道需要補做哪一項專案級核對。實際閱讀時,可把 node -r @swc-node/register script.ts 或相關檔案放進隔離副本,記錄終端輸出、產物與失敗位置,再與 swc-node 的 README 段落逐項比對。這是針對本專案的檢查方式,不是抽象的通用清單。
SWCRC 和 shebang 行為
README 提供 @swc-node/register 的 CommonJS、esm-register-next、esm-register 與 deprecated loader 命令,並指出 ESM 可加 --enable-source-maps。SWCRC=true 會載入 .swcrc;TS_NODE_PROJECT=null 可讓 shebang 忽略 tsconfig.json。core 的同步基準比較 esbuild、typescript、babel,平行基準則受 UV_THREADPOOL_SIZE=11 影響。 SWCRC 和 shebang 行為 是這篇文章的觀察焦點。本文只根據專案 README 與倉庫資料整理,命令和檔名保留原樣,方便讀者對照來源。選型時要把這些明示的入口放回自己的建置、部署與權限條件中,未知項目不當成預設行為。 對 swc-node 而言,這個區分直接影響使用者如何安排工作:先確認入口能否在現有工具鏈運作,再檢查輸出是否符合下一個步驟,而不是把描述性的宣稱當成保證。第 3 節也要留意版本、檔案位置與命令參數的關係,因為少一個旗標或換錯執行環境,結果就可能不再代表 README 所描述的路徑。若來源沒有列出相容矩陣、服務承諾或完整錯誤行為,本文保留這個空白,讓讀者知道需要補做哪一項專案級核對。實際閱讀時,可把 node -r @swc-node/register script.ts 或相關檔案放進隔離副本,記錄終端輸出、產物與失敗位置,再與 swc-node 的 README 段落逐項比對。這是針對本專案的檢查方式,不是抽象的通用清單。
core 的基準數字
README 提供 @swc-node/register 的 CommonJS、esm-register-next、esm-register 與 deprecated loader 命令,並指出 ESM 可加 --enable-source-maps。SWCRC=true 會載入 .swcrc;TS_NODE_PROJECT=null 可讓 shebang 忽略 tsconfig.json。core 的同步基準比較 esbuild、typescript、babel,平行基準則受 UV_THREADPOOL_SIZE=11 影響。 core 的基準數字 是這篇文章的觀察焦點。本文只根據專案 README 與倉庫資料整理,命令和檔名保留原樣,方便讀者對照來源。選型時要把這些明示的入口放回自己的建置、部署與權限條件中,未知項目不當成預設行為。 對 swc-node 而言,這個區分直接影響使用者如何安排工作:先確認入口能否在現有工具鏈運作,再檢查輸出是否符合下一個步驟,而不是把描述性的宣稱當成保證。第 4 節也要留意版本、檔案位置與命令參數的關係,因為少一個旗標或換錯執行環境,結果就可能不再代表 README 所描述的路徑。若來源沒有列出相容矩陣、服務承諾或完整錯誤行為,本文保留這個空白,讓讀者知道需要補做哪一項專案級核對。實際閱讀時,可把 node -r @swc-node/register script.ts 或相關檔案放進隔離副本,記錄終端輸出、產物與失敗位置,再與 swc-node 的 README 段落逐項比對。這是針對本專案的檢查方式,不是抽象的通用清單。
jest 測試轉換器
README 提供 @swc-node/register 的 CommonJS、esm-register-next、esm-register 與 deprecated loader 命令,並指出 ESM 可加 --enable-source-maps。SWCRC=true 會載入 .swcrc;TS_NODE_PROJECT=null 可讓 shebang 忽略 tsconfig.json。core 的同步基準比較 esbuild、typescript、babel,平行基準則受 UV_THREADPOOL_SIZE=11 影響。 jest 測試轉換器 是這篇文章的觀察焦點。本文只根據專案 README 與倉庫資料整理,命令和檔名保留原樣,方便讀者對照來源。選型時要把這些明示的入口放回自己的建置、部署與權限條件中,未知項目不當成預設行為。 對 swc-node 而言,這個區分直接影響使用者如何安排工作:先確認入口能否在現有工具鏈運作,再檢查輸出是否符合下一個步驟,而不是把描述性的宣稱當成保證。第 5 節也要留意版本、檔案位置與命令參數的關係,因為少一個旗標或換錯執行環境,結果就可能不再代表 README 所描述的路徑。若來源沒有列出相容矩陣、服務承諾或完整錯誤行為,本文保留這個空白,讓讀者知道需要補做哪一項專案級核對。實際閱讀時,可把 node -r @swc-node/register script.ts 或相關檔案放進隔離副本,記錄終端輸出、產物與失敗位置,再與 swc-node 的 README 段落逐項比對。這是針對本專案的檢查方式,不是抽象的通用清單。
建置、測試與風險邊界
README 提供 @swc-node/register 的 CommonJS、esm-register-next、esm-register 與 deprecated loader 命令,並指出 ESM 可加 --enable-source-maps。SWCRC=true 會載入 .swcrc;TS_NODE_PROJECT=null 可讓 shebang 忽略 tsconfig.json。core 的同步基準比較 esbuild、typescript、babel,平行基準則受 UV_THREADPOOL_SIZE=11 影響。 建置、測試與風險邊界 是這篇文章的觀察焦點。本文只根據專案 README 與倉庫資料整理,命令和檔名保留原樣,方便讀者對照來源。選型時要把這些明示的入口放回自己的建置、部署與權限條件中,未知項目不當成預設行為。 對 swc-node 而言,這個區分直接影響使用者如何安排工作:先確認入口能否在現有工具鏈運作,再檢查輸出是否符合下一個步驟,而不是把描述性的宣稱當成保證。第 6 節也要留意版本、檔案位置與命令參數的關係,因為少一個旗標或換錯執行環境,結果就可能不再代表 README 所描述的路徑。若來源沒有列出相容矩陣、服務承諾或完整錯誤行為,本文保留這個空白,讓讀者知道需要補做哪一項專案級核對。實際閱讀時,可把 node -r @swc-node/register script.ts 或相關檔案放進隔離副本,記錄終端輸出、產物與失敗位置,再與 swc-node 的 README 段落逐項比對。這是針對本專案的檢查方式,不是抽象的通用清單。
編輯結論
適合需要 swc-node 以 @swc-node/register、core 和 jest 套件,把執行期轉換、測試轉換與效能路徑拆開。 的讀者,不適合把 README 宣稱直接當成生產保證的人。先依 node -r @swc-node/register script.ts 或指定檔案完成一次專案級試跑,觀察輸入、輸出、版本與錯誤,再決定是否納入正式流程。
社群筆記