使用多个项目时,Firebase 部署到错误的托管

Val*_*ain 7 firebase firebase-hosting firebase-cli

我有两个 firebase 项目:myapp用于生产环境和myapp-dev用于开发环境。
我首先使用 firebase cli 使用“myapp”初始化我的项目,因此所有文件都是由此生成的,包括托管资源myapp(这样我就可以将我的应用程序部署到myapp.web.app)。

然后我添加了第二个 firebase 项目(“myapp-dev”)。我运行那些

firebase use --add myapp-dev  # I have selected the right myapp-dev firebase project and set `dev` as short name
firebase target:apply hosting myapp-dev myapp  # note here that I also use name "myapp" as resource
Run Code Online (Sandbox Code Playgroud)

我已经手动更改了我的,.firebasesrc因为我希望开发项目成为默认...

所以我的.firebasesrc样子是这样的

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

firebase.json

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

Run Code Online (Sandbox Code Playgroud)

现在,当我运行这些行时,Web应用程序被部署到产品环境、functions开发环境......

firebase use myapp-dev
firebase deploy
Run Code Online (Sandbox Code Playgroud)

编辑

跑步firebase target:apply hosting myapp myapp-dev有帮助!

tes*_*est 0

我认为你的配置应该是这样的。

文件.firebasesrc

  "targets": {
    "myapp-dev": {
      "hosting": {
        "myapp-dev": [
          "myapp-dev"
        ],
        "myapp": [
          "myapp"
        ]
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)

文件firebase.json:

  "hosting": [
    {
      "target": "myapp-dev",
      "public": "build",
      "ignore": [
        "firebase.json",
        "**/.*",
        "**/node_modules/**"
      ],
      "rewrites": [
        {
          "source": "**",
          "destination": "/index.html"
        }
      ]
    },
    {
      "target": "myapp",
      "public": "dist/myapp", /* folder */
      "ignore": [
        "firebase.json",
        "**/.*",
        "**/node_modules/**"
      ],
      "rewrites": [
        {
          "source": "**",
          "destination": "/index.html"
        }
      ]
    }
  ]
Run Code Online (Sandbox Code Playgroud)

然后使用target 文档进行部署