如何为Firebase设置多个环境

6

我的项目中使用了staging和production环境。 angular.json文件中的fileReplacements属性用于更改文件:

"fileReplacements": [
  {
    "replace": "src/environments/environment.ts",
    "with": "src/environments/environment.prod.ts"
  },
  {
    "replace": "src/app.html",
    "with": "src/app.prod.html"
  }
]

要切换环境,需要使用 .firebaserc 文件。

现在我需要针对每个环境使用不同的 firebase 配置文件(firebase.json 和 firebase.prod.json)。这是否可行?我考虑使用 predeploy 脚本,但不知道如何操作。

1个回答

9
我已经使用单个的 .firebaserc 文件完成了这项任务。你可以添加不同的目标来部署。 firebase target:apply type target-name resource-name 参考:[https://firebase.google.com/docs/cli/targets && https://firebase.google.com/docs/cli/]
// firebase.json
"hosting": [
    {
    "target": "prod",
      "public": "dist/<folder_name>,
      "ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
      "rewrites": [
        {
          "source": "**",
          "destination": "/index.html"
        }
      ]
    }
]

// .firebaserc 文件 // 示例:这里的 "projects" 是您的目标

{
  "projects": {
    "default": "staging-project",
    "dev": "staging-project",
    "prod": "prod-project"
  },
  "targets": {
    "staging-project": {
      "hosting": {
        "stage": [
          "staging-project"
        ],
        "admin-stage": [
          "your-admin-stage"
        ],
        "admin-prod": [
          "your-admin-prod"
        ],
        "prod": [
          "prod-project"
        ]
      }
    }
  }
}

// 在编译脚本中

firebase use dev
firebase deploy --only firestore:rules,hosting:stage,functions...

太棒了!太聪明了。谢谢。 - Timothy
嗯..你是否遇到这样的问题:当你分别运行“firebase use staging AND firebase deploy --only hosting:staging”命令时,它可以正常运行,但是当你运行脚本“firebase use staging && firebase deploy --only hosting:staging”时,它会失败并显示错误信息“未指定公共目录,无法部署托管”。 - Timothy
你需要修改 firebase.json 文件中的 public 目录。 - rijin
为每个构建更新angular.json中的outputDirectory。在firebase.json中为每个构建放置相同的目录路径。 - rijin
1
问题出在 firebase-tools 上。只需删除本地的工具并更新本地工具,问题就不再存在了。 - Timothy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接