【问题标题】:How to change the directory/file path of a file being served by Firebase?如何更改 Firebase 提供的文件的目录/文件路径?
【发布时间】:2020-06-03 08:13:47
【问题描述】:

我目前正在通过 Firebase 托管一个静态网站,但正在提供的一个文件 (index.html) 存在于我的 Mac 计算机的 Public 文件夹中。由于我想提供其他文件,因此我想将索引移动到将包含未来链接文件的项目文件夹(例如/public/my-project/index.html)。

我将如何更新文件路径/目录?

【问题讨论】:

    标签: node.js firebase firebase-hosting


    【解决方案1】:

    在您的项目目录(运行firebase deployfirebase deploy --only hosting 的目录)中,打开或创建firebase.json 并确保它指向正确的公用文件夹。

    {
      "hosting": {
        "public": "public"
      }
    }
    

    这是一个相对路径。如果您的项目和您的 firebase.json 位于 /projects/my-project 中,则这会将所有内容部署在 /projects/my-project/public 中。

    如果您使用 firebase init 初始化 Firebase 项目,所有这些都会自动设置

    由于您的项目可能包含许多不应该部署的文件(自述文件、node_modules、构建脚本等),我建议在项目文件夹中包含一个public 文件夹,如上所述。 (不过,您可以使用 ignore 选项忽略文件,但您希望保持可管理的忽略文件列表。)

    如果您真的不想在项目中使用public 文件夹,您可以尝试从firebase.json 指向当前文件夹:

    {
      "hosting": {
        "public": "."
      }
    }
    

    更多主机配置信息:https://firebase.google.com/docs/hosting/full-config

    【讨论】:

    • 感谢您的回复。我会将 firebase.json 文件放在哪个文件夹中?以及如何更改文件路径开始?现在它只是设置为/public/,但我想专门为此项目在/public/ 内创建一个文件夹,并更改文件路径以转到该文件夹​​。换句话说,/public/my-project/index.html 将是指令而不是 /public/index.html
    • firebase.json 放在项目的根目录中。由于您的项目可能包含许多不应该部署的文件(自述文件、node_modules、构建脚本等),我建议在项目文件夹中创建一个public 文件夹,例如/public/my-project/public/index.html。您的firebase.json(位于public/my-project/firebase.json 应指向此public 文件夹,如{ hosting: { "public": "public" } }
    • 如果你真的不想在你的项目中使用public 文件夹,你可以尝试从你的firebase.json 指向当前文件夹,比如{ hosting: { "public": "." } }
    • 谢谢,这很有道理。这不是我正在寻找的答案,但你在这里给了我一个非常可靠的提示,如果我没有在这里问,我可能会忽略。非常感谢!
    • 很高兴听到这个消息!在我看到你自己的新答案之前,我顺便在我的答案中添加了一些关于 firebase init 的信息(太棒了!):)
    【解决方案2】:

    我在终端中调整设置时不小心偶然发现了答案,它比我预期的要简单得多。供看到此内容的任何人日后参考,

    1. 打开终端,输入firebase init (assuming you have node.js and firebase already installed)。

    2. 使用箭头键向下导航到○ Hosting 选项,按空格键进行选择,然后按Return/Enter 键继续。

    3. 将提示“您想将什么用作公共目录?”问题。输入您想要的文件路径(即public/my-project/public)并输入。

    4. 问题“配置为单页应用(将所有 url 重写为 /index.html)?”这是您的选择,取决于您的平台。

    5. 如果该位置已存在名为index.html 的文件,它将询问您是否要覆盖它并创建一个新文件。您很可能希望保留现有的索引——如果是这种情况,请输入n

    确保还遵循 @nicoqh 的宝贵建议,并区分您的公共文件夹和私人文件夹,以免您的所有文件最终都被 Firebase 部署。

    【讨论】:

      猜你喜欢
      • 2018-11-25
      • 1970-01-01
      • 1970-01-01
      • 2011-09-01
      • 1970-01-01
      • 2020-11-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多