Firebase多站点部署:hosting.public绝对路径无法使用问题
如何在Firebase多站点配置中使用绝对路径指定待部署内容
我想在Firebase Hosting的多站点配置中用绝对路径指定待部署内容,试了下面的配置却没生效:
"target": "site", "public": "/tmp/dist", "ignore": [ "firebase.json", "**/.*", "**/node_modules/**" ],
部署时收到报错:Error: Directory '/tmp/dist' for Hosting does not exist.,但我用ls /tmp/dist确认过这个文件夹确实存在。
后来我在项目目录下建了软链接ln -s /tmp/dist dist,部署就能正常运行了,但这只是临时办法。
另外因为是多站点项目,没法用-p参数指定路径,执行下面的命令会报错:
$ firebase deploy -p /tmp/dist --only hosting:site Error: Cannot specify --public option with multi-site configuration. Having trouble? Try firebase [command] --help
解决方案
Firebase Hosting多站点配置里的public字段不支持直接写绝对路径,CLI会默认把路径解析成相对于项目根目录的相对路径。
有两种可行的解决办法:
用项目内的软链接(适合临时/简单场景)
继续用你现在的操作:在项目根目录创建指向目标绝对路径的软链接,然后把firebase.json里的public设为软链接的名字(比如dist)。部署前要确保软链接已经建好,CI环境里可以把ln -s /tmp/dist dist加到部署的前置步骤里。修改Firebase CLI的工作目录(适合CI/自动化场景)
要是不想依赖软链接,可以在执行firebase deploy前先切换到目标绝对路径的父目录,同时指定项目配置文件的绝对路径。比如:cd /tmp && firebase deploy --only hosting:site --config /path/to/your/project/firebase.json这时候要把
firebase.json里对应站点的public字段改成相对路径(这里就是dist,因为当前工作目录是/tmp)。
内容的提问来源于stack exchange,提问作者angelcervera
相关产品推荐
相关产品推荐

