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"
}
]
}