用 AI 做 Firebase 部署前检查

部署前飞行前检查——firebase.json / rewrites / function region。

最痛的 Firebase 部署是那种”安静地成功”——CLI 打出一个绿色 URL,但某条 rewrite 规则配错了、function region 漂移了、或者某个静态资源现在是 404。AI 在这种检查上很擅长,因为 firebase.json 体积小、结构化、失效模式也都很经典。这是一份你在任何重要 deploy 之前可以让 Claude/ChatGPT 跑一遍的 10 分钟清单。

这篇讲什么

部署前飞行检查——针对你的 firebase.json、function 配置和 public 目录。重点抓那些”绿了但线上炸”的问题:rewrite 顺序、function region 不一致、public 路径错、本地和线上 env 漂移、CDN 缓存头过时。

本文涉及的工具 / 概念:

  • Firebase: Google 的后端 / 托管平台,常用于网站发布、Cloud Functions、Firestore、身份验证。
  • firebase.json: 一份声明式配置,控制 hosting、rewrites、headers、redirects 和 function 绑定。大部分上线退化都能追到这里某一块。
  • Function regions: Cloud Functions 在某个具体 region 跑(us-central1asia-northeast1 等)。一条 rewrite 链里混 region 会让延迟暴涨,看起来像”function 慢”。

这篇适合谁看

每周至少部署一次的 Firebase Hosting 用户,特别是用 Astro/Next.js 配合 firebase.json rewrite 到 Cloud Functions 或 Cloud Run 的团队。没有独立 staging 环境的独立开发者收益最大——AI 审计就是你的 staging。

什么时候适合用

任何动到 firebase.json、加新 function、换域名、改缓存头的 deploy 之前都跑一遍。纯内容更新、路由层没动可以跳过。“deploy 成功了但感觉怪怪的”也立刻跑一遍——比如某条路由 404、某 region 突然变慢、Firestore 规则突然挡了读。

开始前准备

  • 把完整 firebase.jsonpackage.jsonfunctions/ 源码备好。给一半上下文得到的就是一半审计。
  • 明确说出目标 region。AI 没法猜”我们一直部 asia-east1”。
  • 列出”上次成功 deploy 以来改了什么”——新 function、新 rewrite、新域名。这是杠杆最高的上下文。
  • 决定要”严格审”(所有小问题)还是”能不能上”(只挡车的)。开头告诉 AI。

具体步骤

  1. firebase.json 粘给 AI,附一句项目描述(“Astro 静态站 + 两个 Cloud Function:OG 图生成和联系表单”)。
  2. 跑结构化审计 prompt:
审计这份 firebase.json,检查部署期风险:
- Rewrite 顺序(具体路径在 catch-all 之前)
- Function region 一致性(除非有意,所有 function 同 region)
- public 目录路径对不对
- Headers:静态资源有缓存,HTML 无缓存
- Redirects:有没有死循环,有没有跟 rewrite 冲突
- Function 与 rewrite 绑定:function 名是不是真实存在的 export

输出格式:blocker / warning / nit,给出具体行和修复。
  1. 每个发现都让它”给我能直接粘的 diff”。不要散文,要代码块。
  2. 应用修复。在修过的文件上再跑一次审计。应当返回 zero blocker。
  3. 先跑 firebase deploy --only hosting:preview 到预览频道。冒烟测审计点出来的路由。
  4. 推生产。盯日志 5 分钟,看有没有标记过的 function 出现冷启动延迟。

AI 经常抓到的失效模式

  • catch-all rewrite 排在具体路径前面: ** 先匹中,/api/* 永远到不了它的 function。重排顺序就行。
  • rewrite 里 function 名拼错: functions/index.js 导出 ogImage,rewrite 写成 og-image。静默 404。
  • region 混搭: 一半 function 在 us-central1,一半在 asia-east1,rewrite 链跨 region,每调用多 200ms。
  • public 目录不一致: build 输出在 dist/,但 public 设成 out/。CLI 传了错的文件夹,线上是上一份。
  • HTML 也被缓存: index.html 被一条本来想给静态资源的 max-age=31536000 通配规则缓存了一年。

第一次实操怎么跑

就算没坏,也对当前 firebase.json 跑一次审计。AI 大概率能挖出 2-4 个你一直带着的问题——通常是缓存头或 region 漂移。修最高杠杆的那个,重新 deploy 看看。第一次跑的意义是校准:在你这个 stack 上,审计有没有信号?如果只返回通用建议,说明你贴的上下文不够。

完成后检查

  • AI 是不是引用了具体行号或 block 名,还是泛泛而谈?泛泛 = 你没贴够。
  • 修复是可粘代码还是散文?散文 = AI 在猜。
  • 修过之后再审,是不是干净的?冒出新问题 = AI 在幻觉 problems,推回去:“这为什么是个问题?引用 Firebase 文档哪一节。”
  • 预览部署的行为跟预测一致吗?function 仍 404 = AI 漏了一处,收集新证据再问。

怎么复用这套流程

  • 把审计 prompt 存成模板,把项目名和 region 写死。每个 repo 一份。
  • 维护一份”以前抓到过”的清单——模式会重复,AI 不会跨会话记住。
  • 没改代码也季度跑一次。Firebase 会废弃旧选项,配置可能过期。
  • 团队场景:把审计发现贴进 PR 描述,让 reviewer 直接看到改了什么、为什么。

建议的操作流程

配置 + 最近改动总结 + region 声明 → 结构化 prompt 审计 → diff 形式的修复 → 应用 → preview deploy → 冒烟 → 推生产。总耗时 10-15 分钟,相比一次坏部署回滚的一小时。

容易踩的坑

  • “小 deploy”不跑审计——小 deploy 才是 rewrite 拼写错溜过去的时机。
  • 只贴 firebase.json,不带 function 源码——AI 没法验证 binding。
  • 问”这样行不行”而不是走结构化清单——开放问题得到的是模糊回答。
  • 接受散文修复而不要 diff。
  • 不走 preview 频道直接推生产——preview 是免费的,能挡掉 90% 残余问题。
  • 一直放着 nit 不修——它们会累积成下个月的事故。

FAQ

  • AI 知道我的 Firebase 项目设置吗?: 不知道,只知道你贴的。region、project ID、最近改动都要明说。
  • 能审 Firestore rules 吗?: 能。把 firestore.rules 单独贴,套同样的结构化输出格式。
  • App Check / 账单配置呢?: firebase.json 单独看不到。要审就把控制台页面截图也带上。
  • firebase deploy --dry-run 有什么区别?: dry-run 检查语法;AI 抓的是语义错(顺序错、region 错、目标错)。
  • 能自动化吗?: 可以——pre-deploy 脚本里把 firebase.jsongit diff pipe 给模型,遇到 blocker 就 exit 非 0。

相关阅读

标签: #AI 编程 #教程