如何从 firebase cli 切换应用程序?
Posted
技术标签:
【中文标题】如何从 firebase cli 切换应用程序?【英文标题】:How do I switch apps from the firebase cli? 【发布时间】:2016-07-25 18:05:44 【问题描述】:这看起来应该很容易做到,但不知为何,我被打败了。
我正在尝试使用 firebase-tools CLI 与我的数据库进行交互。我可以毫无问题地登录,当我输入firebase list
时,我会得到我当前所有应用程序的列表。它还告诉我当前连接到哪个应用程序。
我的问题是,我想连接到其他应用程序之一。我正在我的暂存应用程序上运行查询,我需要在我的生产应用程序上运行它们。我可以在列表中看到生产应用程序,但我没有找到任何切换到该应用程序的方法。
想法?
【问题讨论】:
如果在列出项目时遇到问题,请使用firebase projects:list
【参考方案1】:
在这里找到一些有用的信息Firebase CLI Reference。
以下代码对我有用。
firebase use <project_id>
【讨论】:
firebase.googleblog.com/2016/07/… - 快速参考【参考方案2】:我宁愿使用脚本。考虑这样的项目结构:
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
【讨论】:
欢迎,我的方法旨在与团队的其他成员共享:)【参考方案3】:如果你在 windows 上使用 Node.js,你的答案应该是
firebase use <project_id>
但没有 例如
firebase use chat-app-2a150
您可以使用以下代码查看您所有的项目,以便选择正确的项目ID来使用
firebase projects:list
【讨论】:
【参考方案4】:在您运行firebase list
的目录中,将有一个名为firebase.json
的文件。如果您在文本编辑器中打开它,您将在其中看到应用程序名称。您可以在此处更改或删除firebase.json
以更改应用程序。
或者省去编辑文本文件的麻烦,照 Jason 说的做:使用 firebase init
。
【讨论】:
现在有变化吗?因为我在 firebase.json 中找不到应用程序名称,但可以在 .firebaserc....中找到它。感谢您的说明... 项目名现在确实在.firebaserc
。
可能是错误的,但这似乎并没有切换数据库。部署将部署到“当前”项目,但它似乎仍然从原始数据库中提取数据。如果您要使用它来将生产环境与暂存环境分开,那么该死的危险。希望没有人丢失他们的产品数据。 :(
我遇到了与@Enric 描述的在不同项目中访问默认数据库相同的问题。有什么方法可以检测客户端正在使用什么项目,以便我可以更改配置以适当地初始化应用程序?
确保更改 firebaseConfig ` // 你的网络应用的 Firebase 配置 var firebaseConfig = apiKey: "api-key", authDomain: "new-project.firebaseapp.com", databaseURL: "https: /new-project.firebaseio.com”,projectId:“new-project-id”,storageBucket:“xxxxxxxxxxx.appspot.com”,messagingSenderId:“xxxxxx”,appId:“xxxxxxxxxx”,measurementId:“xxxxxxxx”; // 初始化 Firebase`【参考方案5】:
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
。
【讨论】:
【参考方案6】:你可以只使用命令行开关
--project=my-firebase-project
【讨论】:
【参考方案7】:添加@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"
【讨论】:
【参考方案8】:我可能错了,但似乎最初的问题是关于在给定项目中更改应用程序,而不是简单地更改项目。
这个答案是关于在项目中更改应用程序和 site_ID。
就我而言,我有一个包含 2 个网络应用程序的项目 (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 documentation):
-
检查两个应用程序和相应的 site_ID 是否设置正确:
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
。
【讨论】:
【参考方案9】:要更改 firebase 应用程序目标项目,您可以输入 "firebase use myProjectName" 。我还使用上述答案“firebase list”来检查我有什么项目 (使用 Angular 7 应用程序在 Firebase cli 7.4 中为我工作)
【讨论】:
以上是关于如何从 firebase cli 切换应用程序?的主要内容,如果未能解决你的问题,请参考以下文章
从深层链接启动应用程序时未调用 AppDelegate ContinueUserActivity,应归咎于 Firebase SDK
我可以完全从 CLI 或脚本创建和配置 GCP 项目 + Firebase 吗?