<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>JavaScript on KnightLi的博客</title>
        <link>https://www.knightli.com/zh-tw/tags/javascript/</link>
        <description>Recent content in JavaScript on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-tw</language>
        <lastBuildDate>Sun, 17 May 2026 17:42:25 +0800</lastBuildDate><atom:link href="https://www.knightli.com/zh-tw/tags/javascript/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Bun：把 JavaScript 執行時、套件管理器、測試和打包合在一起</title>
        <link>https://www.knightli.com/zh-tw/2026/05/17/bun-javascript-toolkit/</link>
        <pubDate>Sun, 17 May 2026 17:42:25 +0800</pubDate>
        
        <guid>https://www.knightli.com/zh-tw/2026/05/17/bun-javascript-toolkit/</guid>
        <description>&lt;p&gt;Bun 是 oven-sh 開源的 JavaScript / TypeScript 一體化工具鏈。&lt;/p&gt;
&lt;p&gt;它不是只想做一個更快的 Node.js 替代品，而是把執行時、套件管理器、腳本執行器、測試執行器和打包器都放進同一個 &lt;code&gt;bun&lt;/code&gt; 命令裡。對前端和 Node.js 開發者來說，Bun 的吸引力在於：少裝一堆工具，少等一堆安裝和建置流程，很多常見任務可以直接用一個命令完成。&lt;/p&gt;
&lt;p&gt;專案地址：&lt;a class=&#34;link&#34; href=&#34;https://github.com/oven-sh/bun&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/oven-sh/bun&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;先說結論&#34;&gt;先說結論
&lt;/h2&gt;&lt;p&gt;Bun 最適合想簡化 JavaScript 工具鏈的人。&lt;/p&gt;
&lt;p&gt;它能做這些事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;執行 JavaScript、TypeScript、JSX 和 TSX。&lt;/li&gt;
&lt;li&gt;作為 Node.js 相容執行時。&lt;/li&gt;
&lt;li&gt;替代 npm / yarn / pnpm 做套件管理。&lt;/li&gt;
&lt;li&gt;執行 &lt;code&gt;package.json&lt;/code&gt; 裡的 scripts。&lt;/li&gt;
&lt;li&gt;執行測試。&lt;/li&gt;
&lt;li&gt;打包前端或後端程式碼。&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;bunx&lt;/code&gt; 執行 npm 套件裡的命令。&lt;/li&gt;
&lt;li&gt;提供 &lt;code&gt;Bun.serve&lt;/code&gt;、&lt;code&gt;bun:sqlite&lt;/code&gt;、&lt;code&gt;Bun.sql&lt;/code&gt;、&lt;code&gt;Bun.redis&lt;/code&gt;、&lt;code&gt;Bun.s3&lt;/code&gt; 等內建 API。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它最明顯的價值是開發體驗：安裝依賴快、啟動快、命令統一、TypeScript 和 JSX 開箱即用。&lt;/p&gt;
&lt;p&gt;但 Bun 也不是所有專案都應該立刻切換。大型 Node.js 專案、依賴大量原生擴充的專案、生產穩定性要求極高的服務，仍然需要逐項驗證相容性、建置行為、測試行為和部署方式。&lt;/p&gt;
&lt;h2 id=&#34;bun-是什麼&#34;&gt;Bun 是什麼
&lt;/h2&gt;&lt;p&gt;按照官方 README 的描述，Bun 是一個面向 JavaScript 和 TypeScript 應用的一體化工具包。它以單一可執行檔 &lt;code&gt;bun&lt;/code&gt; 發布。&lt;/p&gt;
&lt;p&gt;它的核心是 Bun runtime：一個快速 JavaScript 執行時，目標是作為 Node.js 的 drop-in replacement。Bun 使用 Zig 編寫，底層基於 JavaScriptCore，重點優化啟動時間和記憶體占用。&lt;/p&gt;
&lt;p&gt;這意味著你可以直接執行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun run index.tsx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;TypeScript 和 JSX 不需要額外設定就能跑。&lt;/p&gt;
&lt;p&gt;同一個 &lt;code&gt;bun&lt;/code&gt; 命令還包含：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;test runner&lt;/li&gt;
&lt;li&gt;script runner&lt;/li&gt;
&lt;li&gt;Node.js 相容套件管理器&lt;/li&gt;
&lt;li&gt;bundler&lt;/li&gt;
&lt;li&gt;package runner&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;常見命令包括：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun &lt;span class=&#34;nb&#34;&gt;test&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun run start
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun install &amp;lt;pkg&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bunx cowsay &lt;span class=&#34;s1&#34;&gt;&amp;#39;Hello, world!&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;過去一個專案裡可能同時出現 &lt;code&gt;node&lt;/code&gt;、&lt;code&gt;npm&lt;/code&gt;、&lt;code&gt;pnpm&lt;/code&gt;、&lt;code&gt;tsx&lt;/code&gt;、&lt;code&gt;jest&lt;/code&gt;、&lt;code&gt;vitest&lt;/code&gt;、&lt;code&gt;webpack&lt;/code&gt;、&lt;code&gt;esbuild&lt;/code&gt;、&lt;code&gt;ts-node&lt;/code&gt; 等工具。Bun 的路線是盡量把高頻路徑收進一個工具裡。&lt;/p&gt;
&lt;h2 id=&#34;安裝方式&#34;&gt;安裝方式
&lt;/h2&gt;&lt;p&gt;Bun 支援 Linux、macOS 和 Windows，覆蓋 x64 與 arm64。&lt;/p&gt;
&lt;p&gt;官方推薦安裝腳本：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://bun.com/install &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Windows：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-powershell&#34; data-lang=&#34;powershell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;powershell&lt;/span&gt; &lt;span class=&#34;n&#34;&gt;-c&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;irm bun.sh/install.ps1 | iex&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也可以透過 npm 安裝：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -g bun
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;macOS Homebrew：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew tap oven-sh/bun
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew install bun
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Docker：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker pull oven/bun
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run --rm --init --ulimit &lt;span class=&#34;nv&#34;&gt;memlock&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;-1:-1 oven/bun
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Linux 使用者要注意核心版本。README 提到強烈建議 Linux kernel &lt;code&gt;5.6&lt;/code&gt; 或更高，最低要求是 &lt;code&gt;5.1&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;升級到最新版：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun upgrade
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;升級到 canary：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun upgrade --canary
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;生產環境一般不建議直接用 canary，除非你是在驗證新特性或排查特定 bug。&lt;/p&gt;
&lt;h2 id=&#34;為什麼-bun-會快&#34;&gt;為什麼 Bun 會快
&lt;/h2&gt;&lt;p&gt;Bun 的「快」主要來自幾個層面。&lt;/p&gt;
&lt;p&gt;第一，執行時啟動快。很多 CLI 工具和開發腳本的瓶頸不是長期 CPU 運算，而是程序啟動、模組載入、TypeScript 轉譯和依賴解析。Bun 針對這些路徑做了很多優化。&lt;/p&gt;
&lt;p&gt;第二，套件管理快。&lt;code&gt;bun install&lt;/code&gt; 的目標是替代 npm / yarn / pnpm 的依賴安裝流程。它使用全域快取和自己的 lockfile，安裝大量依賴時通常能明顯減少等待。&lt;/p&gt;
&lt;p&gt;第三，TypeScript / JSX 開箱即用。很多專案只是想執行一個 &lt;code&gt;.ts&lt;/code&gt; 或 &lt;code&gt;.tsx&lt;/code&gt; 腳本，傳統 Node.js 工具鏈需要額外加 &lt;code&gt;tsx&lt;/code&gt;、&lt;code&gt;ts-node&lt;/code&gt;、Babel 或建置步驟。Bun 可以直接跑，減少了膠水工具。&lt;/p&gt;
&lt;p&gt;第四，內建工具減少程序和設定切換。測試、腳本、打包、執行都在同一個工具裡，很多場景不用再在多個 CLI 之間切換。&lt;/p&gt;
&lt;p&gt;但要注意，「Bun 很快」不等於每個專案都一定更快。真實效果取決於依賴類型、腳本邏輯、測試框架、建置設定、Node.js API 使用情況和 CI 快取策略。&lt;/p&gt;
&lt;h2 id=&#34;套件管理替代-npm--yarn--pnpm&#34;&gt;套件管理：替代 npm / yarn / pnpm
&lt;/h2&gt;&lt;p&gt;Bun 可以直接安裝依賴：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;新增依賴：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun add react
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;新增開發依賴：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun add -d typescript
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;移除依賴：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun remove react
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;查看依賴原因：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun why react
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;安全檢查：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun audit
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果你從 npm 或 pnpm 遷移，重點要看：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;bun.lock&lt;/code&gt; 是否進入版本控制。&lt;/li&gt;
&lt;li&gt;CI 是否使用 &lt;code&gt;bun install --frozen-lockfile&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;私有 registry 和 &lt;code&gt;.npmrc&lt;/code&gt; 是否相容。&lt;/li&gt;
&lt;li&gt;workspace 行為是否符合預期。&lt;/li&gt;
&lt;li&gt;lifecycle scripts 是否會帶來安全風險。&lt;/li&gt;
&lt;li&gt;原本依賴 pnpm 特性的 monorepo 是否能平順遷移。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;小專案可以直接試。大型 monorepo 不建議一次性全切，可以先在單個 package 或 CI 的非關鍵任務裡試。&lt;/p&gt;
&lt;h2 id=&#34;執行腳本和-typescript&#34;&gt;執行腳本和 TypeScript
&lt;/h2&gt;&lt;p&gt;Bun 可以執行 &lt;code&gt;package.json&lt;/code&gt; 裡的腳本：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun run start
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也可以直接執行檔案：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun run index.ts
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun run index.tsx
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這對工具腳本很方便，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;scripts/build.ts&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scripts/seed.ts&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scripts/migrate.ts&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scripts/check.ts&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果用 Node.js，通常要處理 TypeScript loader 或預編譯問題。Bun 的直接執行能力可以讓這些腳本更輕。&lt;/p&gt;
&lt;p&gt;不過，如果腳本依賴 Node.js 特定行為，尤其是 loader、ESM/CJS 邊界、原生模組、child process、檔案監聽和某些邊緣 API，仍然要測試。&lt;/p&gt;
&lt;h2 id=&#34;測試執行器&#34;&gt;測試執行器
&lt;/h2&gt;&lt;p&gt;Bun 內建測試執行器：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun &lt;span class=&#34;nb&#34;&gt;test&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;它適合想減少 Jest / Vitest 設定的小專案，也適合把一些單元測試、工具測試、庫測試遷移到更輕的執行方式。&lt;/p&gt;
&lt;p&gt;遷移測試時重點關注：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;expect&lt;/code&gt; 行為差異。&lt;/li&gt;
&lt;li&gt;mock API 差異。&lt;/li&gt;
&lt;li&gt;snapshot 行為。&lt;/li&gt;
&lt;li&gt;DOM 測試環境。&lt;/li&gt;
&lt;li&gt;測試發現規則。&lt;/li&gt;
&lt;li&gt;覆蓋率輸出。&lt;/li&gt;
&lt;li&gt;CI reporter 支援。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果專案已經深度依賴 Jest 生態，例如大量自訂 matcher、複雜 mock、jsdom、babel-jest、ts-jest，遷移就不要太急。可以先讓新模組用 &lt;code&gt;bun test&lt;/code&gt;，舊測試繼續保留原框架。&lt;/p&gt;
&lt;h2 id=&#34;打包和建置&#34;&gt;打包和建置
&lt;/h2&gt;&lt;p&gt;Bun 也提供 bundler，常見用法是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun build ./src/index.ts --outdir ./dist
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;它可以用於前端包、後端腳本、CLI 工具和庫建置。Bun 文件還覆蓋 loaders、plugins、macros、CSS、HTML、HMR、minifier、single-file executable 等方向。&lt;/p&gt;
&lt;p&gt;適合優先嘗試的場景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;小型前端工具。&lt;/li&gt;
&lt;li&gt;Node.js CLI。&lt;/li&gt;
&lt;li&gt;內部腳本。&lt;/li&gt;
&lt;li&gt;單檔服務。&lt;/li&gt;
&lt;li&gt;不依賴複雜 webpack loader 的專案。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;謹慎遷移的場景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;複雜 webpack 外掛鏈。&lt;/li&gt;
&lt;li&gt;大量 Vite 外掛。&lt;/li&gt;
&lt;li&gt;深度依賴 Babel 轉換。&lt;/li&gt;
&lt;li&gt;特殊 CSS / asset pipeline。&lt;/li&gt;
&lt;li&gt;微前端和模組聯邦。&lt;/li&gt;
&lt;li&gt;對建置產物 hash、chunk、相容性要求很細的專案。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bun bundler 很有吸引力，但建置工具遷移的風險通常比套件管理更高，最好單獨驗證。&lt;/p&gt;
&lt;h2 id=&#34;執行-http-服務&#34;&gt;執行 HTTP 服務
&lt;/h2&gt;&lt;p&gt;Bun 提供 &lt;code&gt;Bun.serve&lt;/code&gt; 來寫 HTTP 服務：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ts&#34; data-lang=&#34;ts&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;Bun&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;serve&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;port&lt;/span&gt;: &lt;span class=&#34;kt&#34;&gt;3000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;fetch&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;req&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;new&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;Response&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;Hello from Bun&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這對小型 API、內部服務、Webhook receiver、邊緣風格服務很方便。Bun 還提供 WebSockets、Workers、Streams、SQLite、PostgreSQL、Redis、S3、TCP/UDP sockets 等 API。&lt;/p&gt;
&lt;p&gt;如果你已有 Express、Fastify、NestJS、Next.js、Hono、Elysia 等框架，也可以先看它們在 Bun 上的相容程度，不必為了用 Bun 就重寫服務。&lt;/p&gt;
&lt;p&gt;更現實的路徑是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先用 Bun 做開發腳本和套件管理。&lt;/li&gt;
&lt;li&gt;再用 Bun 跑測試。&lt;/li&gt;
&lt;li&gt;最後評估是否把執行時切到 Bun。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;執行時遷移最需要謹慎，因為它直接影響生產服務行為。&lt;/p&gt;
&lt;h2 id=&#34;和-nodejs-的關係&#34;&gt;和 Node.js 的關係
&lt;/h2&gt;&lt;p&gt;Bun 的目標之一是作為 Node.js 的 drop-in replacement，但「相容」不是「完全等同」。&lt;/p&gt;
&lt;p&gt;Node.js 生態已經累積很多年，很多套件依賴細微行為：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CJS / ESM 互操作。&lt;/li&gt;
&lt;li&gt;Node 內建模組。&lt;/li&gt;
&lt;li&gt;原生擴充。&lt;/li&gt;
&lt;li&gt;npm lifecycle scripts。&lt;/li&gt;
&lt;li&gt;檔案系統邊緣行為。&lt;/li&gt;
&lt;li&gt;stream 和 Buffer 細節。&lt;/li&gt;
&lt;li&gt;worker / child_process。&lt;/li&gt;
&lt;li&gt;除錯和 profiling。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bun 在相容性上進步很快，但生產遷移仍要以測試結果為準。&lt;/p&gt;
&lt;p&gt;比較穩妥的判斷方式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;你的測試能否在 Bun 下通過。&lt;/li&gt;
&lt;li&gt;關鍵依賴是否支援 Bun。&lt;/li&gt;
&lt;li&gt;建置產物是否一致。&lt;/li&gt;
&lt;li&gt;CI 和本地表現是否一致。&lt;/li&gt;
&lt;li&gt;線上執行是否有監控和回滾。&lt;/li&gt;
&lt;li&gt;Docker 映像和部署腳本是否穩定。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果只是替換套件管理器，風險較低；如果替換生產執行時，風險高很多。&lt;/p&gt;
&lt;h2 id=&#34;適合哪些專案&#34;&gt;適合哪些專案
&lt;/h2&gt;&lt;p&gt;Bun 很適合這些場景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;新的 JavaScript / TypeScript 小專案。&lt;/li&gt;
&lt;li&gt;內部工具和腳本。&lt;/li&gt;
&lt;li&gt;CLI 專案。&lt;/li&gt;
&lt;li&gt;需要快速安裝依賴的 CI。&lt;/li&gt;
&lt;li&gt;希望減少工具鏈複雜度的前端專案。&lt;/li&gt;
&lt;li&gt;對啟動速度敏感的腳本和服務。&lt;/li&gt;
&lt;li&gt;想用 TypeScript 開箱即跑的開發者。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;暫時要謹慎的場景：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;超大型 monorepo。&lt;/li&gt;
&lt;li&gt;深度綁定 pnpm workspace 行為的專案。&lt;/li&gt;
&lt;li&gt;依賴大量 Node.js 原生擴充的服務。&lt;/li&gt;
&lt;li&gt;建置鏈路高度客製的前端工程。&lt;/li&gt;
&lt;li&gt;對生產執行時一致性要求極高的後端。&lt;/li&gt;
&lt;li&gt;依賴 Jest 複雜生態的測試套件。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一個保守但實用的策略是：先把 Bun 當作開發工具，而不是馬上替代全部生產執行時。&lt;/p&gt;
&lt;h2 id=&#34;遷移建議&#34;&gt;遷移建議
&lt;/h2&gt;&lt;p&gt;如果想在現有專案試 Bun，可以按這個順序：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在本地安裝 Bun。&lt;/li&gt;
&lt;li&gt;執行 &lt;code&gt;bun install&lt;/code&gt;，觀察依賴安裝結果。&lt;/li&gt;
&lt;li&gt;提交或暫存 &lt;code&gt;bun.lock&lt;/code&gt;，避免和舊 lockfile 混用造成混亂。&lt;/li&gt;
&lt;li&gt;嘗試 &lt;code&gt;bun run &amp;lt;script&amp;gt;&lt;/code&gt; 跑常用腳本。&lt;/li&gt;
&lt;li&gt;用 &lt;code&gt;bun test&lt;/code&gt; 遷移少量測試。&lt;/li&gt;
&lt;li&gt;在 CI 加一個非阻塞 Bun job。&lt;/li&gt;
&lt;li&gt;確認沒有相容問題後，再考慮替換主安裝流程。&lt;/li&gt;
&lt;li&gt;最後再評估生產執行時是否切換。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;對團隊專案，最好保留回滾路徑：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;遷移前保留原 npm / pnpm / yarn 流程。&lt;/li&gt;
&lt;li&gt;CI 裡同時跑一段時間。&lt;/li&gt;
&lt;li&gt;不要在同一次改動裡同時換執行時、套件管理器、測試框架和打包器。&lt;/li&gt;
&lt;li&gt;把遷移拆成小步驟，每一步都有可驗證收益。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這樣做雖然慢一點，但不容易把問題混在一起。&lt;/p&gt;
&lt;h2 id=&#34;常見命令速查&#34;&gt;常見命令速查
&lt;/h2&gt;&lt;p&gt;安裝：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -fsSL https://bun.com/install &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;升級：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun upgrade
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;安裝依賴：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;新增依賴：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun add lodash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;執行腳本：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun run dev
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;直接執行 TypeScript：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun run scripts/build.ts
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;測試：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun &lt;span class=&#34;nb&#34;&gt;test&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;打包：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bun build ./src/index.ts --outdir ./dist
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;執行套件命令：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;bunx cowsay &lt;span class=&#34;s1&#34;&gt;&amp;#39;Hello, world!&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;總結&#34;&gt;總結
&lt;/h2&gt;&lt;p&gt;Bun 的價值不只是「比 Node.js 快」。更重要的是，它把 JavaScript / TypeScript 開發裡一堆分散工具收進一個 &lt;code&gt;bun&lt;/code&gt; 命令：執行時、套件管理器、腳本執行器、測試執行器和打包器。&lt;/p&gt;
&lt;p&gt;對新專案和內部工具來說，這種一體化體驗很舒服：安裝快、啟動快、設定少，TypeScript 和 JSX 也能直接跑。對已有大型專案來說，Bun 更適合先從低風險環節切入，例如套件安裝、腳本和部分測試，再逐步驗證建置和執行時。&lt;/p&gt;
&lt;p&gt;如果你經常被 Node.js 工具鏈裡的安裝速度、設定碎片和測試啟動時間折磨，Bun 值得認真試一下。但真正遷移生產服務時，還是要回到最樸素的工程判斷：測試能不能過、依賴是否相容、CI 是否穩定、線上有沒有回滾。&lt;/p&gt;
&lt;p&gt;參考連結：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/oven-sh/bun&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;oven-sh/bun&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://bun.com/docs&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Bun Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://bun.com/docs/installation&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Bun Installation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://bun.com/docs/runtime/nodejs-compat&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Bun Node.js compatibility&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
