[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"knowledge-\u002Fapi\u002Fknowledge\u002Fbooklet\u002Fend\u002Fbun\u002Fdeploy":3,"knowledge-related-\u002Fknowledge\u002Fbooklet\u002Fend\u002Fbun\u002Fdeploy":697,"knowledge-series-\u002Fknowledge\u002Fbooklet\u002Fend\u002Fbun\u002Fdeploy":723},{"source":4,"connector":5,"page":6},"sqlite","better-sqlite3",{"path":7,"title":8,"description":9,"category":10,"tags":11,"date":14,"pinned":15,"draft":15,"body":16,"seo":693,"stem":694,"id":695,"extension":696},"\u002Fknowledge\u002Fbooklet\u002Fend\u002Fbun\u002Fdeploy","生产环境与部署指南","Bun 内置了高性能的打包器（bundler），可以对前端或全栈应用进行生产优化。","技能小册",[12,13],"bun","deploy","2024-08-31",false,{"type":17,"value":18,"toc":683},"minimark",[19,22,27,32,35,113,120,168,171,175,178,256,261,298,311,315,318,323,347,351,366,370,383,387,402,406,574,578,612,616,676,679],[20,21,8],"h1",{"id":8},[23,24,26],"h2",{"id":25},"bun-生产环境与部署指南","Bun 生产环境与部署指南",[28,29,31],"h3",{"id":30},"一生产构建","一、生产构建",[33,34,9],"p",{},[36,37,42],"pre",{"className":38,"code":39,"language":40,"meta":41,"style":41},"language-bash shiki shiki-themes material-theme-lighter github-light github-dark","# 构建前端应用（如 React\u002FVue 的入口 HTML）\nbun build --production .\u002Findex.html --outdir .\u002Fdist\n\n# 构建后端服务（将 TypeScript 编译为 JavaScript）\nbun build --production .\u002Fsrc\u002Findex.ts --outdir .\u002Fbuild --target node\n","bash","",[43,44,45,54,77,84,90],"code",{"__ignoreMap":41},[46,47,50],"span",{"class":48,"line":49},"line",1,[46,51,53],{"class":52},"sutJx","# 构建前端应用（如 React\u002FVue 的入口 HTML）\n",[46,55,57,60,64,68,71,74],{"class":48,"line":56},2,[46,58,12],{"class":59},"sbgvK",[46,61,63],{"class":62},"s_sjI"," build",[46,65,67],{"class":66},"stzsN"," --production",[46,69,70],{"class":62}," .\u002Findex.html",[46,72,73],{"class":66}," --outdir",[46,75,76],{"class":62}," .\u002Fdist\n",[46,78,80],{"class":48,"line":79},3,[46,81,83],{"emptyLinePlaceholder":82},true,"\n",[46,85,87],{"class":48,"line":86},4,[46,88,89],{"class":52},"# 构建后端服务（将 TypeScript 编译为 JavaScript）\n",[46,91,93,95,97,99,102,104,107,110],{"class":48,"line":92},5,[46,94,12],{"class":59},[46,96,63],{"class":62},[46,98,67],{"class":66},[46,100,101],{"class":62}," .\u002Fsrc\u002Findex.ts",[46,103,73],{"class":66},[46,105,106],{"class":62}," .\u002Fbuild",[46,108,109],{"class":66}," --target",[46,111,112],{"class":62}," node\n",[33,114,115,119],{},[116,117,118],"strong",{},"常用构建选项","：",[121,122,123,130,136,153,162],"ul",{},[124,125,126,129],"li",{},[43,127,128],{},"--production","：启用生产优化（压缩、Tree Shaking、环境变量替换）",[124,131,132,135],{},[43,133,134],{},"--outdir","：指定输出目录",[124,137,138,141,142,145,146,149,150,152],{},[43,139,140],{},"--target","：可选 ",[43,143,144],{},"browser","、",[43,147,148],{},"node"," 或 ",[43,151,12],{},"（默认）",[124,154,155,158,159,161],{},[43,156,157],{},"--minify","：显式开启压缩（",[43,160,128],{}," 会自动开启）",[124,163,164,167],{},[43,165,166],{},"--sourcemap","：生成 source map（便于错误追踪）",[33,169,170],{},"构建产物可直接部署到任何静态托管服务（如 S3、CloudFlare Pages）或生产服务器。",[28,172,174],{"id":173},"二使用-docker-部署","二、使用 Docker 部署",[33,176,177],{},"将 Bun 应用容器化，保证环境一致性，适合云平台或自建服务器。",[36,179,183],{"className":180,"code":181,"language":182,"meta":41,"style":41},"language-dockerfile shiki shiki-themes material-theme-lighter github-light github-dark","# Dockerfile\nFROM oven\u002Fbun:latest AS builder\nWORKDIR \u002Fapp\nCOPY package.json bun.lock .\u002F\n# 若仓库仍提交旧的二进制锁文件，可改为复制 bun.lockb\nRUN bun install --frozen-lockfile --production\n\nFROM oven\u002Fbun:latest\nWORKDIR \u002Fapp\nCOPY --from=builder \u002Fapp\u002Fnode_modules .\u002Fnode_modules\nCOPY . .\nEXPOSE 3000\nCMD [\"bun\", \"run\", \"index.ts\"]\n","dockerfile",[43,184,185,190,195,200,205,210,216,221,227,232,238,244,250],{"__ignoreMap":41},[46,186,187],{"class":48,"line":49},[46,188,189],{},"# Dockerfile\n",[46,191,192],{"class":48,"line":56},[46,193,194],{},"FROM oven\u002Fbun:latest AS builder\n",[46,196,197],{"class":48,"line":79},[46,198,199],{},"WORKDIR \u002Fapp\n",[46,201,202],{"class":48,"line":86},[46,203,204],{},"COPY package.json bun.lock .\u002F\n",[46,206,207],{"class":48,"line":92},[46,208,209],{},"# 若仓库仍提交旧的二进制锁文件，可改为复制 bun.lockb\n",[46,211,213],{"class":48,"line":212},6,[46,214,215],{},"RUN bun install --frozen-lockfile --production\n",[46,217,219],{"class":48,"line":218},7,[46,220,83],{"emptyLinePlaceholder":82},[46,222,224],{"class":48,"line":223},8,[46,225,226],{},"FROM oven\u002Fbun:latest\n",[46,228,230],{"class":48,"line":229},9,[46,231,199],{},[46,233,235],{"class":48,"line":234},10,[46,236,237],{},"COPY --from=builder \u002Fapp\u002Fnode_modules .\u002Fnode_modules\n",[46,239,241],{"class":48,"line":240},11,[46,242,243],{},"COPY . .\n",[46,245,247],{"class":48,"line":246},12,[46,248,249],{},"EXPOSE 3000\n",[46,251,253],{"class":48,"line":252},13,[46,254,255],{},"CMD [\"bun\", \"run\", \"index.ts\"]\n",[33,257,258,119],{},[116,259,260],{},"构建并运行镜像",[36,262,264],{"className":38,"code":263,"language":40,"meta":41,"style":41},"docker build -t my-bun-app .\ndocker run -p 3000:3000 my-bun-app\n",[43,265,266,282],{"__ignoreMap":41},[46,267,268,271,273,276,279],{"class":48,"line":49},[46,269,270],{"class":59},"docker",[46,272,63],{"class":62},[46,274,275],{"class":66}," -t",[46,277,278],{"class":62}," my-bun-app",[46,280,281],{"class":62}," .\n",[46,283,284,286,289,292,295],{"class":48,"line":56},[46,285,270],{"class":59},[46,287,288],{"class":62}," run",[46,290,291],{"class":66}," -p",[46,293,294],{"class":62}," 3000:3000",[46,296,297],{"class":62}," my-bun-app\n",[299,300,301],"blockquote",{},[33,302,303,306,307,310],{},[116,304,305],{},"小技巧","：使用多阶段构建可以减小最终镜像体积（上面的示例已包含）。基础镜像 ",[43,308,309],{},"oven\u002Fbun:latest"," 约 50MB，生产环境下非常轻量。",[28,312,314],{"id":313},"三部署到云平台","三、部署到云平台",[33,316,317],{},"许多主流云平台已原生支持 Bun，无需复杂配置即可部署。",[319,320,322],"h4",{"id":321},"_1-digitalocean-app-platform","1. DigitalOcean App Platform",[121,324,325,336],{},[124,326,327,328,331,332,335],{},"连接 GitHub 仓库，平台检测到 ",[43,329,330],{},"bun.lock","（或旧格式 ",[43,333,334],{},"bun.lockb","）后，通常会按 Bun 项目构建并运行。",[124,337,338,339,342,343,346],{},"可在 ",[43,340,341],{},"Procfile"," 或环境变量中指定启动命令（如 ",[43,344,345],{},"web: bun run index.ts","）。",[319,348,350],{"id":349},"_2-railway","2. Railway",[121,352,353,360,363],{},[124,354,355,356,359],{},"一键部署：",[43,357,358],{},"railway up","（需安装 Railway CLI）",[124,361,362],{},"支持直接导入 GitHub 仓库，若检测到 Bun 项目会自动配置。",[124,364,365],{},"有时需要显式添加 Dockerfile（如上节所示）以确保构建通过。",[319,367,369],{"id":368},"_3-vercel-netlify前端静态资源","3. Vercel \u002F Netlify（前端静态资源）",[121,371,372],{},[124,373,374,375,378,379,382],{},"使用 ",[43,376,377],{},"bun build --production"," 生成静态文件后，将 ",[43,380,381],{},"dist"," 目录部署到这些平台即可。",[319,384,386],{"id":385},"_4-自建服务器如-aws-ec2linode","4. 自建服务器（如 AWS EC2、Linode）",[121,388,389,396],{},[124,390,391,392,395],{},"安装 Bun（通过官方脚本），用 ",[43,393,394],{},"bun run"," 启动服务。",[124,397,398,399,401],{},"建议配合 PM2（",[43,400,12],{}," 可运行 PM2 进程管理器）或 systemd 守护进程。",[28,403,405],{"id":404},"四常见问题与注意事项","四、常见问题与注意事项",[407,408,409,422],"table",{},[410,411,412],"thead",{},[413,414,415,419],"tr",{},[416,417,418],"th",{},"问题",[416,420,421],{},"说明与解决方案",[423,424,425,457,481,509,522,539,556],"tbody",{},[413,426,427,433],{},[428,429,430],"td",{},[116,431,432],{},"Node.js 兼容性",[428,434,435,436,439,440,145,443,145,446,449,450,456],{},"Bun 对 Node.js API 覆盖面很高，但具体比例随版本变化；",[116,437,438],{},"C++ 原生插件","（部分旧版 ",[43,441,442],{},"bcrypt",[43,444,445],{},"sharp",[43,447,448],{},"node-gyp"," 相关包）仍可能不兼容。请以当前 ",[451,452,432],"a",{"href":453,"rel":454},"https:\u002F\u002Fbun.com\u002Fdocs\u002Fruntime\u002Fnodejs-apis",[455],"nofollow"," 与实测为准。",[413,458,459,464],{},[428,460,461],{},[116,462,463],{},"锁文件",[428,465,466,467,469,470,472,473,476,477,480],{},"Bun 1.2+ 默认文本锁文件 ",[43,468,330],{},"（可直接看 diff）；旧项目可能仍是二进制 ",[43,471,334],{},"。两种格式均应",[116,474,475],{},"提交到 Git","；查看依赖可用 ",[43,478,479],{},"bun pm ls","。",[413,482,483,488],{},[428,484,485],{},[116,486,487],{},"CPU 指令集要求",[428,489,490,491,494,495,498,499,502,503,508],{},"标准 ",[116,492,493],{},"x64"," 构建通常要求 ",[116,496,497],{},"AVX2","（约 Haswell \u002F Excavator 及更新）；无 AVX2 时可选用官方 ",[116,500,501],{},"x64-baseline"," 构建（更慢）。以 ",[451,504,507],{"href":505,"rel":506},"https:\u002F\u002Fbun.com\u002Fdocs\u002Finstallation",[455],"安装文档"," 为准。",[413,510,511,516],{},[428,512,513],{},[116,514,515],{},"macOS 版本要求",[428,517,518,519,480],{},"官方要求 ",[116,520,521],{},"macOS 13.0 (Ventura) 或更高",[413,523,524,529],{},[428,525,526],{},[116,527,528],{},"CI 中锁定依赖",[428,530,374,531,534,535,538],{},[43,532,533],{},"bun install --frozen-lockfile","：锁文件与 ",[43,536,537],{},"package.json"," 不一致时会失败，避免 CI 静默升级依赖。",[413,540,541,546],{},[428,542,543],{},[116,544,545],{},"测试新特性",[428,547,374,548,551,552,555],{},[43,549,550],{},"bun upgrade --canary"," 升级到每日构建版；通过 ",[43,553,554],{},"bun upgrade","（或文档推荐的稳定通道命令）切回稳定版。",[413,557,558,563],{},[428,559,560],{},[116,561,562],{},"环境变量",[428,564,565,566,569,570,573],{},"生产环境推荐通过 ",[43,567,568],{},".env"," 或平台环境变量注入，启动时可用 ",[43,571,572],{},"bun --env-file .env run index.ts"," 加载。",[28,575,577],{"id":576},"五性能与监控建议","五、性能与监控建议",[121,579,580,593,603],{},[124,581,582,585,586,588,589,592],{},[116,583,584],{},"启用日志压缩","：使用 ",[43,587,394],{}," 时可通过管道将日志输出到 ",[43,590,591],{},"bun --silent"," 减少输出开销。",[124,594,595,598,599,602],{},[116,596,597],{},"健康检查","：为 HTTP 服务添加 ",[43,600,601],{},"\u002Fhealth"," 端点，供容器编排或负载均衡器使用。",[124,604,605,608,609,611],{},[116,606,607],{},"多核利用","：Bun 默认利用多线程处理 I\u002FO，无需额外配置。如需更精细的集群模式，可启动多个进程（如使用 ",[43,610,394],{}," 配合负载均衡）。",[28,613,615],{"id":614},"总结部署-checklist","总结：部署 Checklist",[617,618,619,627,639,648,654,662,670],"ol",{},[124,620,621,119,624,626],{},[116,622,623],{},"构建优化",[43,625,377],{}," 生成产物。",[124,628,629,632,633,635,636,638],{},[116,630,631],{},"依赖锁定","：提交 ",[43,634,330],{},"（或仍在使用的 ",[43,637,334],{},"）到版本库。",[124,640,641,585,644,647],{},[116,642,643],{},"容器化（可选）",[43,645,646],{},"oven\u002Fbun"," 基础镜像编写 Dockerfile。",[124,649,650,653],{},[116,651,652],{},"云平台选择","：DigitalOcean \u002F Railway \u002F Vercel 等都支持 Bun。",[124,655,656,658,659,661],{},[116,657,562],{},"：通过 ",[43,660,568],{}," 或平台注入。",[124,663,664,119,667,480],{},[116,665,666],{},"CI 命令",[43,668,669],{},"bun install --frozen-lockfile && bun run test",[124,671,672,675],{},[116,673,674],{},"兼容性排查","：检查 C++ 插件、CPU 指令集、macOS 版本。",[33,677,678],{},"Bun 目前已在生产环境中被许多公司使用，随着版本的迭代，稳定性和兼容性不断提升。对于新项目，Bun 是一个非常值得尝试的高性能 JavaScript 运行时。",[680,681,682],"style",{},"html pre.shiki code .sutJx, html code.shiki .sutJx{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}html pre.shiki code .sbgvK, html code.shiki .sbgvK{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .stzsN, html code.shiki .stzsN{--shiki-light:#91B859;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":41,"searchDepth":56,"depth":56,"links":684},[685],{"id":25,"depth":56,"text":26,"children":686},[687,688,689,690,691,692],{"id":30,"depth":79,"text":31},{"id":173,"depth":79,"text":174},{"id":313,"depth":79,"text":314},{"id":404,"depth":79,"text":405},{"id":576,"depth":79,"text":577},{"id":614,"depth":79,"text":615},{"title":8,"description":9},"knowledge\u002Fbooklet\u002Fend\u002FBun\u002Fdeploy","knowledge\u002Fknowledge\u002Fbooklet\u002Fend\u002FBun\u002Fdeploy.md","md",{"items":698},[699,703,707,711,715,719],{"path":700,"title":701,"description":702,"category":10,"score":212},"\u002Fknowledge\u002Fbooklet\u002Fend\u002Fbun\u002Fbase","Bun 基础与核心命令","Bun 是用 Zig 编写的 JavaScript 运行时，内置包管理（bun install）、打包（bun build）、测试（bun test）等，并持续兼容 Node.js API。本文介绍核心特点、安装方式，以及日常最常用的命令与包管理功能。见 运行时对比。",{"path":704,"title":705,"description":706,"category":10,"score":212},"\u002Fknowledge\u002Fbooklet\u002Fend\u002Fbun\u002Fhttp","HTTP 服务器","Bun 内置了高性能的 HTTP 服务器，通过 Bun.serve 可以轻松启动服务。从 Bun v1.2.3 开始，推荐使用 routes 对象来定义路由，更加直观和灵活。",{"path":708,"title":709,"description":710,"category":10,"score":86},"\u002Fknowledge\u002Fbooklet\u002Fend\u002Fbasics","后端入门概览","本目录覆盖 JavaScript\u002FTypeScript 服务端运行时与框架、数据存储，以及 Rust 系统编程入门，提供从零到部署的完整学习路径。前置建议：JavaScript 基础、工程化 · 环境变量。",{"path":712,"title":713,"description":714,"category":10,"score":86},"\u002Fknowledge\u002Fbooklet\u002Fproject\u002Fvite\u002Fdeploy","部署实践","Vite 项目的 CI\u002FCD、多环境、CDN、Legacy 与体积预算等工程化要点。环境变量见 env；构建见 生产构建。",{"path":716,"title":717,"description":718,"category":10,"score":86},"\u002Fknowledge\u002Fbooklet\u002Fend\u002Fnestjs\u002Fnew\u002Fdeploy","部署与运维","生产环境：nest build 输出 dist，用进程管理器与反向代理部署。",{"path":720,"title":721,"description":722,"category":10,"score":49},"\u002Fknowledge\u002Fbooklet\u002Fsql","数据存储导读","本目录覆盖关系型数据库 MySQL 与内存数据库 Redis，从概念、安装到数据操作、性能优化、备份与缓存实践，面向后端开发与运维入门。与 NestJS 数据库、后端入门 等应用层文档配合阅读。",{"series":724,"title":12,"items":725,"index":49,"prev":731,"next":732},"booklet\u002Fend\u002Fbun",[726,728,729],{"path":700,"title":701,"date":727,"pinned":15},"2026-07-23",{"path":7,"title":8,"date":14,"pinned":15},{"path":704,"title":705,"date":730,"pinned":15},"2026-07-12",{"path":700,"title":701,"date":727,"pinned":15},{"path":704,"title":705,"date":730,"pinned":15}]