Firebase:将同一应用程序部署到多个 Firebase 项目

Luk*_*ggy 7 firebase firebase-hosting firebase-cli

I\xc2\xb4m 尝试将我的代码部署到两个不同的 Firebase 项目,一个用于开发,一个用于生产。

\n\n

my-app-dev项目已包含并正在运行,因此我添加了my-app(用于生产)firebase use --add并选择了my-app.

\n\n

这就是我的 Firebase 配置现在的样子:

\n\n

.firebaserc

\n\n
{\n  "targets": {\n    "my-app-dev": {\n      "hosting": {\n        "app": [\n          "my-app-dev"\n        ]\n      }\n    }\n  },\n  "projects": {\n    "default": "my-app-dev",\n    "prod": "my-app"\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

firebase.json

\n\n
{\n  "hosting": [\n    {\n      "target": "app",\n      "public": "dist/app",\n      "ignore": [\n        "firebase.json",\n        "**/.*",\n        "**/node_modules/**"\n      ],\n      "rewrites": [\n        {\n          "source": "**",\n          "destination": "/index.html"\n        }\n      ]\n    }\n  ],\n  "functions": {\n    "predeploy": [\n      "npm --prefix \\"$RESOURCE_DIR\\" run lint",\n      "npm --prefix \\"$RESOURCE_DIR\\" run build"\n    ]\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

只要我部署到默认项目,一切都正常,但是当我尝试时,firebase deploy -P prod它会显示以下错误:

\n\n
Deploy target app not configured for project my-app. Configure with:\n\nfirebase target:apply hosting app <resources...>\n
Run Code Online (Sandbox Code Playgroud)\n\n

我试图找到有关此命令的更多信息,但仍然不知道要为资源添加什么。总的来说,我觉得它.firebaserc的结构非常混乱。

\n

Kea*_*che 5

我有同样的问题,但以不同的方式。

我的项目是一个 Angular 11 项目,它有 4 个不同的环境 - 部署到默认项目(env)的相同行为很好,但是当我尝试部署到不同的环境(firebase 项目)时,它失败了同样的错误: Deploy target ___ not configured for project ___. Configure with:

我通过添加到我的.firebasesrc > targets

{
  "projects": {
    "default": "default-project"
  },
  "targets": {
    "default-project": {
      "hosting": {
        "frontend": [
          "default-project"
        ]
      }
    },
    "staging-project": { // Added this entry.
      "hosting": {
        "frontend": [
          "staging-project"
        ]
      }
    } 
  }
}
Run Code Online (Sandbox Code Playgroud)


Luk*_*ggy 1

根据 GitHub 中的此评论,如果没有“hacky”方法(例如在部署期间以编程方式交换 firebase.json),就无法完成此操作。

目前,Firebase CLI 旨在将项目视为功能相同的匿名环境。这对于能够将相同的资产部署到多个项目而无需更改代码(包括在 firebase.json 中)非常重要。

为了实现您想要的,您需要设置一个 dev 和 prod 文件夹,每个文件夹都有自己的 firebase.json 并且每个文件夹都有一个仅针对该特定项目的目标。现在不支持将不同的资产部署到不同的项目,将来也不太可能支持(但是,我们可能允许在某个时候通过标志配置 firebase.json 的位置)。