这看起来应该很容易做到,但无论出于何种原因,我都被打败了。
我正在尝试使用 firebase-tools CLI 与我的数据库进行交互。我可以毫无问题地登录,当我输入 时firebase list
,我会得到我当前所有应用程序的列表。它还告诉我当前连接到哪个应用程序。
我的问题是,我想连接到其他应用程序之一。我正在我的暂存应用程序上运行查询,我需要在我的生产应用程序上运行它们。我可以在列表中看到生产应用程序,但我没有找到任何切换到该应用程序的方法。
想法?
这看起来应该很容易做到,但无论出于何种原因,我都被打败了。
我正在尝试使用 firebase-tools CLI 与我的数据库进行交互。我可以毫无问题地登录,当我输入 时firebase list
,我会得到我当前所有应用程序的列表。它还告诉我当前连接到哪个应用程序。
我的问题是,我想连接到其他应用程序之一。我正在我的暂存应用程序上运行查询,我需要在我的生产应用程序上运行它们。我可以在列表中看到生产应用程序,但我没有找到任何切换到该应用程序的方法。
想法?
我宁愿使用脚本。考虑这样的项目结构:
your-project
├── .firebaserc
└── functions
├── package.json
└── index.js
转到.firebaserc
并遵循下一个示例
{
"projects": {
"default": "project-name",
"prod": "other-name"
}
}
然后转到package.json
并添加以下脚本(changeToProd
和changeToDev
)。
{
...
"scripts": {
...
"changeToProd": "firebase use prod",
"changeToDev": "firebase use default"
},
"dependencies": {
...
},
...
}
如果您的 IDE 支持 npm 脚本,您可以使用 IDE UI 运行它们,否则可以使用命令控制台运行它们。确保您在functions
文件夹内。
npm run-script changeToProd
您可以通过从终端运行以下命令来验证您当前的项目,或者像我们刚刚所做的那样添加到脚本中
firebase use
如果您在 Windows 上使用 Node.js,您的答案应该是
firebase use <project_id>
但没有 <> 例如
firebase use chat-app-2a150
您可以使用以下代码查看您的所有项目,以便选择要使用的正确项目 ID
firebase projects:list
在您运行的目录中firebase list
,将有一个名为firebase.json
. 如果您在文本编辑器中打开它,您将在其中看到应用程序名称。您可以在此处更改或删除firebase.json
以更改应用程序。
或者省去编辑文本文件的麻烦,按照 Jason 所说的去做:使用firebase init
.
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
查看当前正在使用的项目。
不常见的情况:
.firebaserc
,请firebase use my-own-id
按照接受的答案中所述在本地执行。.firebaserc
到.gitignore
.你可以只使用命令行开关
--project=my-firebase-project
加法@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}"
}
}
我可能错了,但似乎最初的问题是关于在给定项目中更改应用程序,而不是简单地更改项目。
这个答案是关于在项目中更改应用程序和 site_ID。
就我而言,我有一个包含 2 个 Web 应用程序的项目(CoolProject):
form
website
这两个应用程序都位于本地和 GitHub 中的单独存储库中。
每个应用程序都有自己特定的 site_ID:
coolproject-form[.web.app]
coolproject-website[.web.app]
我首先设置了form
应用程序并毫无问题地部署到coolproject-form
. 但是当我创建web
应用程序(和关联的coolproject-website
site_ID)并尝试使用firebase deploy --only hosting
或firebase deploy --only hosting:website
错误地部署它以coolproject-form
覆盖form
应用程序时。
这就是我最终解决问题的方式(基于此Firebase 文档):
firebase apps:list
firebase hosting:sites:list
website
托管的部署目标(通过.firebaserc
)firebase target:apply hosting website coolproject-website
firebase.json
(对于website
应用程序):...
"hosting": [{
"target": "website",
"public": "build",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]
}],
...
firebase deploy --only hosting
有了这个,website
应用程序现在已正确部署到coolproject-website.web.app
.
要更改 firebase 应用程序目标项目,您可以键入 "firebase use myProjectName" 。我还使用上面的答案“firebase list”来检查我有什么项目(在firebase cli 7.4和angular 7 app中为我工作)