我有一个基于typescript构建的现有nodejs应用程序。
现有的nodejs应用程序结构如下
ROOT
- dist
- src
- *.ts
- test
- package.json
- gulpfile.json
- .env
所有的编译都在dist下进行,应用程序运行良好。
我已经在许多任务中使用firebase函数,并且希望在这个应用程序中也使用同样的函数。
现在我正试图将firebase功能直接集成到这个项目中。修订后的结构为
ROOT
- dist
- src
- *.ts
- workers <firebase functions>
- index.ts
- test
- package.json
- gulpfile.json
- .env
- firebase.json
- .firebaserc
为了确保firebase看到正确的文件夹,我在firebase.json中配置了指向根目录的文件夹
{
"functions": {
"source": "."
}
}
除了我在包.json 中做了必要的更改
{
...
"main": "dist/workers/index.js",
"engines": {
"node": "10"
},
...
这些配置确保我能够在云外壳上运行功能
firebase functions:shell --debug
问题在于部署该功能。
firebase deploy --only functions --debug
firebase部署正在寻找部署我的整个目录,导致400错误。调试日志清楚地显示包的大小超过300 MB,基本上打包了所有不必要的文件。
如何确保firebase部署只部署所需的文件夹。
Firebase CLI将无条件地部署您指定为";源";,减去node_modules,这些模块将由Cloud Functions在服务端使用npm install
重建。无法在此位置添加或省略文件。
默认情况下,Firebase CLI初始化的项目会创建一个名为"的文件夹;函数";,并将其用作所有与函数相关的代码和配置的根,包括package.json以及所有源代码和transpiled代码。这通常是项目的组织方式。
考虑到这一要求,您可能应该重新考虑将函数添加到现有项目中,并将函数代码保留在自己的项目中。有一些方法可以在项目之间共享代码,如果这是你需要做的,那就另当别论了。