使用Firebase CLI打印托管默认URL(或通道URL)



Firebase CLI工具可以以人类可读的格式向我显示项目托管站点的默认URL:

$ firebase hosting:sites:list
Sites for project <my-app>
┌──────────────────┬──────────────────────────────────┬─────────────────┐
│ Site ID          │ Default URL                      │ App ID (if set) │
├──────────────────┼──────────────────────────────────┼─────────────────┤
│ my-app           │ https://<my-app>.web.app         │ --              │
└──────────────────┴──────────────────────────────────┴─────────────────┘

如果我有多个频道,它还可以向我显示给定网站上每个频道的URL:

$ firebase hosting:channel:list
Channels for site <my-app>
┌────────────┬─────────────────────┬──────────────────────────────────┬─────────────┐
│ Channel ID │ Last Release Time   │ URL                              │ Expire Time │
├────────────┼─────────────────────┼──────────────────────────────────┼─────────────┤
│ live       │ 2022-10-27 15:06:54 │ https://<my-app>.web.app         │ never       │
└────────────┴─────────────────────┴──────────────────────────────────┴─────────────┘

但是,如何只打印频道的URL,以便在shell脚本中使用?(不使用正则表达式。(

您可以使用--json参数。

结合jq,您可以检索特定的URL。

直播频道示例:

$ firebase hosting:channel:list --json |
jq '.result.channels[]|select(.name|contains("live")) | .url'

没有任何命令只打印默认URL。CLI使用包cli-table,并将所有数据打印在一起。

但是,您可以使用Firebase Hosting REST API列出项目的所有站点及其频道,并创建一个脚本,甚至更好地派生Firebase CLI,并在CLI的listSites()函数旁边添加一个新函数,以打印不带表的URL。

RESTAPI响应只是一组站点,所以它应该非常简单:

{
"sites": [
{
"name": "projects/<project_id>/sites/<site_id>",
"defaultUrl": "https://<project_id>.web.app",
"type": "DEFAULT_SITE"
}
]
}

最新更新