如何更改 Firebase 提供的文件的 directory/file 路径?

How to change the directory/file path of a file being served by Firebase?

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

我将如何更新文件 path/directory?

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

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

这是一个相对路径。如果您的项目和 firebase.json 位于 /projects/my-project,这将部署 /projects/my-project/public.

中的所有内容

如果您使用 firebase init.

初始化您的 Firebase 项目,所有这些都会自动设置

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

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

指向当前文件夹
{
  "hosting": {
    "public": "."
  }
}

有关托管配置的更多信息:https://firebase.google.com/docs/hosting/full-config

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

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

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

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

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

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

确保还遵循@nicoqh 的宝贵建议并区分您的 public 和私人文件夹,这样并不是您的所有文件最终都会被 Firebase 部署。