在 firebase 函数中配置部署目录

Configure the deployment directory in firebase functions

我有一个基于 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": "."
  }
}

除此之外,我还对 package.json

进行了必要的更改
{
  ...
  "main": "dist/workers/index.js",
  "engines": {
        "node": "10"
  },
  ...

这些配置确保我能够运行云上的功能shell

firebase functions:shell --debug

问题在于部署函数。

firebase deploy --only functions --debug

firebase 部署正在部署我的整个目录,导致 400 错误。调试日志清楚地显示包大小超过 300 MB,基本上打包了所有不需要的文件。

如何确保 firebase 部署仅部署所需的文件夹。

Firebase CLI 将无条件部署您指定为“源”的所有内容,减去 node_modules,这些内容将由 Cloud Functions 在服务端使用 npm install 重建。无法从此位置添加或省略文件。

默认情况下,Firebase CLI 初始化的项目会创建一个名为“functions”的文件夹,并将其用作所有与函数相关的代码和配置的根目录,包括 package.json 以及所有源代码和转译代码。这通常是项目的组织方式。

鉴于此要求,您可能应该重新考虑向现有项目添加函数,并将函数代码保留在其自己的项目中。有一些方法可以在项目之间共享代码,如果这是您需要做的,那是另一个需要研究的主题。