138

这看起来应该很容易做到,但无论出于何种原因,我都被打败了。

我正在尝试使用 firebase-tools CLI 与我的数据库进行交互。我可以毫无问题地登录,当我输入 时firebase list,我会得到我当前所有应用程序的列表。它还告诉我当前连接到哪个应用程序。

我的问题是,我想连接到其他应用程序之一。我正在我的暂存应用程序上运行查询,我需要在我的生产应用程序上运行它们。我可以在列表中看到生产应用程序,但我没有找到任何切换到该应用程序的方法。

想法?

4

9 回答 9

291

在这里找到一些有用的信息Firebase CLI Reference

以下代码适用于我。

firebase use <project_id>
于 2017-08-30T09:05:06.473 回答
38

我宁愿使用脚本。考虑这样的项目结构:

your-project
├── .firebaserc
└── functions
   ├── package.json
   └── index.js

转到.firebaserc并遵循下一个示例

{
  "projects": {
    "default": "project-name",
    "prod": "other-name"
  }
}

然后转到package.json并添加以下脚本(changeToProdchangeToDev)。

{
  ...
  "scripts": {
    ...
    "changeToProd": "firebase use prod",
    "changeToDev": "firebase use default"
  },
  "dependencies": {
    ...
  },
  ...
}

如果您的 IDE 支持 npm 脚本,您可以使用 IDE UI 运行它们,否则可以使用命令控制台运行它们。确保您在functions文件夹内。

npm run-script changeToProd

您可以通过从终端运行以下命令来验证您当前的项目,或者像我们刚刚所做的那样添加到脚本中

firebase use
于 2018-07-27T18:42:27.873 回答
25

如果您在 Windows 上使用 Node.js,您的答案应该是

firebase use <project_id>

但没有 <> 例如

firebase use chat-app-2a150

您可以使用以下代码查看您的所有项目,以便选择要使用的正确项目 ID

firebase projects:list
于 2020-03-26T16:32:29.197 回答
17

在您运行的目录中firebase list,将有一个名为firebase.json. 如果您在文本编辑器中打开它,您将在其中看到应用程序名称。您可以在此处更改或删除firebase.json以更改应用程序。

或者省去编辑文本文件的麻烦,按照 Jason 所说的去做:使用firebase init.

于 2016-04-05T17:07:25.377 回答
17

2020:

官方推荐的方式是使用“别名”:

在您的.firebaserc中,设置不同的项目 ID,如下所示:

{
  "projects": {
    "production": "my-project-id",
    "testing": "my-testing-project-id"
  }
}
// you can also add them interactively with `firebase use --add`

然后在 CLI 中使用firebase use testing,切换项目firebase use production

注意:切换项目不会创建任何 git diff,它只是在本地机器中记住。用于firebase use查看当前正在使用的项目。

不常见的情况:

  • 如果您想使用自己的 ID 而不提交对项目所有者的更改.firebaserc,请firebase use my-own-id按照接受的答案中所述在本地执行。
  • 如果您希望人们分叉您的代码,然后使用他们自己的 ID,请添加.firebaserc.gitignore.
于 2020-07-22T16:24:43.283 回答
6

你可以只使用命令行开关

--project=my-firebase-project
于 2019-09-09T10:16:24.647 回答
1

加法@cutiko的回答

package.json

"scripts": {
...
"prod": "echo \"Switch to Production environment\" && firebase use prod && npm run runtimeconfig",
"dev": "echo \"Switch to Development environment\" && firebase use default && npm run runtimeconfig"
...

npm run runtimeconfig获取自定义配置环境

.firebaserc

{
  "projects": {
    "default":"{project-dev-id}",
    "prod": "{project-prod-id}"
  }
}
于 2020-07-24T03:23:51.407 回答
1

我可能错了,但似乎最初的问题是关于在给定项目中更改应用程序,而不是简单地更改项目。

这个答案是关于在项目中更改应用程序和 site_ID。

就我而言,我有一个包含 2 个 Web 应用程序的项目(CoolProject):

  • 评估表:form
  • 一个主要网站:website

这两个应用程序都位于本地和 GitHub 中的单独存储库中。

每个应用程序都有自己特定的 site_ID:

  • 形式:coolproject-form[.web.app]
  • 网站:coolproject-website[.web.app]

我首先设置了form应用程序并毫无问题地部署到coolproject-form. 但是当我创建web应用程序(和关联的coolproject-websitesite_ID)并尝试使用firebase deploy --only hostingfirebase deploy --only hosting:website错误地部署它以coolproject-form覆盖form应用程序时。

这就是我最终解决问题的方式(基于此Firebase 文档):

  1. 检查两个应用程序和相应的 site_ID 是否设置正确:
firebase apps:list
firebase hosting:sites:list
  1. 设置website托管的部署目标(通过.firebaserc
firebase target:apply hosting website coolproject-website
  1. 更新firebase.json(对于website应用程序):
...
"hosting": [{
    "target": "website",
    "public": "build",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  }],
...
  1. 部署
firebase deploy --only hosting

有了这个,website应用程序现在已正确部署到coolproject-website.web.app.

于 2021-06-17T19:23:23.947 回答
0

要更改 firebase 应用程序目标项目,您可以键入 "firebase use myProjectName" 。我还使用上面的答案“firebase list”来检查我有什么项目(在firebase cli 7.4和angular 7 app中为我工作)

于 2019-10-27T09:32:16.667 回答