如何无需Firebase Hosting,将Firebase Functions部署到自定义域名?
解决Firebase Functions部署到自定义域名无需托管内容的问题
我之前也碰到过这个棘手的情况——Firebase Hosting默认对public目录有硬性要求,但其实我们可以通过极简配置绕开限制,完全不需要冗余内容或者临时方案,具体操作如下:
1. 创建最小化的public目录
在你的Firebase项目根目录下新建一个public文件夹,然后在里面创建一个空的.gitkeep文件(这个文件只是为了确保目录能被工具识别,Firebase本身不会在意它的内容;如果不用Git,放一个空的index.html也可以,.gitkeep相对更隐蔽)。
2. 配置firebase.json实现全路由到Functions
修改你的firebase.json,让Hosting忽略public目录下的所有内容,同时把所有请求都转发到你的云函数:
{ "hosting": { "public": "public", "ignore": [ "**/*" ], "rewrites": [ { "source": "**", "function": "yourTargetFunction" } ], // 可选:根据你的需求调整URL格式 "cleanUrls": true, "trailingSlash": false }, "functions": { "source": "functions" } }
这里的关键配置细节:
"public": "public":满足Firebase对存在public目录的要求,但我们通过后续配置彻底跳过静态内容部署"ignore": ["**/*"]:告诉Firebase不要部署public目录里的任何文件,彻底避免冗余内容上传"rewrites":将所有请求路径都路由到你指定的云函数,记得把yourTargetFunction替换成你实际的函数名称
3. 完成部署
运行部署命令,你可以选择同时部署Functions和Hosting配置:
firebase deploy --only hosting,functions
也可以分开部署:
# 先部署云函数 firebase deploy --only functions # 再部署Hosting路由配置 firebase deploy --only hosting
这样配置后,Firebase Hosting只会作为流量入口,将所有请求转发到你的云函数,不会托管任何静态内容,完全符合你只部署Functions到自定义域名的需求,没有任何冗余或临时操作。
内容的提问来源于stack exchange,提问作者jsardev
相关产品推荐
相关产品推荐

