【问题标题】:Firebase: deploy same app to multiple Firebase-projectsFirebase:将相同的应用程序部署到多个 Firebase 项目
【发布时间】:2020-10-06 02:21:34
【问题描述】:

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

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

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

.firebaserc

{
  "targets": {
    "my-app-dev": {
      "hosting": {
        "app": [
          "my-app-dev"
        ]
      }
    }
  },
  "projects": {
    "default": "my-app-dev",
    "prod": "my-app"
  }
}

firebase.json

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

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

Deploy target app not configured for project my-app. Configure with:

firebase target:apply hosting app <resources...>

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

【问题讨论】:

    标签: firebase firebase-hosting firebase-cli


    【解决方案1】:

    我遇到了同样的问题,但方式不同。

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

    我通过添加到我的.firebasesrc &gt; targets 解决了这个问题:

    {
      "projects": {
        "default": "default-project"
      },
      "targets": {
        "default-project": {
          "hosting": {
            "frontend": [
              "default-project"
            ]
          }
        },
        "staging-project": { // Added this entry.
          "hosting": {
            "frontend": [
              "staging-project"
            ]
          }
        } 
      }
    }
    

    【讨论】:

      【解决方案2】:

      根据 GitHub 中的 comment,如果没有“hacky”方法,例如在部署期间以编程方式交换 firebase.json,则无法完成。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-10-25
        • 2017-09-01
        • 1970-01-01
        • 2014-10-29
        • 2023-02-07
        • 2018-02-12
        相关资源
        最近更新 更多