当我运行firebase deploy
时,我正在寻找一种排除某些firebase函数的方法。但我想在运行模拟器时保留这些函数。
当我用flutter驱动程序执行集成测试,并且我的应用程序连接到模拟器时,我需要一些方法来更改测试脚本中firestore中的数据。firebase函数是一个很好的方法,我可以使用http包调用它。但是这些特定于模拟器的功能不能部署到生产中。我知道我可以使用--only
标志,当我运行firebase deploy
来指定我想要部署的所有函数时。但这有点麻烦。我不想每次都写下我想要部署的所有函数的名称。
我知道我的firebase.json中的函数键可以与";忽略";领域但我不知道这是怎么回事。src/index.ts文件中导出的所有函数(编译为lib/src/index.js(都已部署。那么忽略键是如何工作的呢?我试着这样使用它:
{
"functions": {
"source": "functions",
"ignore": [
"**/node_modules/**",
"**/src/emulator/**"
]
}
}
但这会导致部署错误。
我找到了解决问题的方法。通过将此放入我的index.ts
var emulator = undefined;
if(process.env.FUNCTIONS_EMULATOR) {
emulator = emulatorFunction;
}
export {emulator};
当我运行firebase deploy
时,我在模拟器中使用的函数不会部署到生产环境中。
functions.ignore
属性没有文档,但其工作方式与hosting.ignore属性相同。它默认为['node_modules', '.git']
,正如您在源代码中看到的那样。
它应该接受类似于.gitigner.的类似glob的模式