如何为Firebase函数配置package.json本地与云端的不同入口?
嘿,这个需求我太熟了!给你一套清晰的配置方案,完美适配本地跑ES2017代码、部署用转译后代码的场景:
1. 先把Babel转译脚本配置到位
首先在你的package.json里完善prepare脚本,确保转译后的代码和必要的配置文件都输出到dist目录——毕竟部署时Firebase需要依赖文件才能正常运行:
"scripts": { "prepare": "babel index.js --out-dir dist && cp package.json dist/", // 如果你的项目用了lock文件,也可以加上复制: // "prepare": "babel index.js --out-dir dist && cp package.json package-lock.json dist/" }
2. 给本地和部署做两套Firebase配置
在项目根目录创建两个Firebase配置文件,分别对应不同环境:
firebase.local.json(本地开发专属):指定Functions的源码目录为当前根目录,这样firebase serve会直接跑你写的ES2017代码:
{ "functions": { "source": "." } }
firebase.prod.json(部署专属):指定源码目录为dist,让Firebase部署转译后的代码:
{ "functions": { "source": "dist" } }
3. 封装成一键命令,省得每次手动敲参数
把本地启动和部署的命令封装到package.json的scripts里,以后只用敲简单的命令就行:
"scripts": { "prepare": "babel index.js --out-dir dist && cp package.json dist/", "serve": "firebase serve --only functions --config firebase.local.json", "deploy": "npm run prepare && firebase deploy --only functions --config firebase.prod.json" }
4. 验证一下效果
- 本地开发时,直接跑
npm run serve,Firebase会加载根目录的ES2017代码,不用提前转译 - 部署时,跑
npm run deploy,脚本会自动先执行转译,再用生产配置部署dist里的代码
这样就彻底区分开了本地和云端的入口点,不用手动切换配置,流程也很顺畅。要是你嫌维护两个配置文件麻烦,也可以用环境变量动态修改firebase.json,但个人觉得两套配置文件的方式更直观,不容易出错~
内容的提问来源于stack exchange,提问作者OctaviaLo
相关产品推荐
相关产品推荐

