使用--前缀路径将gatsby站点部署到netlify

使用--前缀路径将gatsby站点部署到netlify,gatsby,netlify,Gatsby,Netlify,我正在尝试将一个用盖茨比构建的博客站点部署到Netlify。问题是,我想从/blog为网站提供服务。 在这些文档之后,我更改了gatsby-config.js以包含pathPrefix,如下所示: module.exports = { pathPrefix: `/blog`, siteMetadata: {...}, plugins: [...] } 接下来,我将build命令更改为包含--prefix路径: gatsby build --prefix-paths 当我使用gat

我正在尝试将一个用盖茨比构建的博客站点部署到Netlify。问题是,我想从/blog为网站提供服务。 在这些文档之后,我更改了gatsby-config.js以包含pathPrefix,如下所示:

module.exports = {
  pathPrefix: `/blog`,
  siteMetadata: {...},
  plugins: [...]
}
接下来,我将build命令更改为包含--prefix路径:

gatsby build --prefix-paths
当我使用
gatsbyserve--前缀路径在本地运行站点时,一切正常。然而,在我部署到netlify之后,该站点仍然由root/提供服务,而不是由/blog提供服务。
我的netlify.toml:

[build]
  Command = "npm run build"
  Functions = "lambda"
  Publish = "public"
生成命令frum netlify.toml从package.json运行命令,如下所示:

"build": "run-p build:**",
"build:app": "gatsby build --prefix-paths",
"build:lambda": "netlify-lambda build src/lambda",

我错过了什么?我是否需要对netlify或其他什么进行其他配置?

适用于遇到相同问题的任何人。我可以通过将公用文件夹中的所有文件复制到“blog”文件夹中来解决此问题,如下所示:

"build": "run-p build:**",
"build:app": "npm run clean && gatsby build --prefix-paths && npm run move",
"build:lambda": "netlify-lambda build src/lambda",
"move": "cd public && mkdir blog | mv * blog"
我将move命令添加到package.json中,并在构建之后执行它。我不确定我是否应该这样做,但在做了一些研究之后(我也发现了一个开始这样做的人),我认为没关系


既然文件是从“/blog”提供的,那么一切都很好。

假设您已经有一个主站点在运行,并且希望将您的盖茨比博客集成到其中

  • 在盖茨比博客
    gatsby config.js
    文件中,添加:
  • 始终在您的盖茨比博客中,在站点的根目录下创建一个
    netlify.toml
    配置文件,其中包含:
  • 此重定向的原因是,
    --前缀路径
    不会更改gatsby在生成目录中存储生成文件的位置。这会在以
    /blog
    为前缀的博客链接和文件路径之间产生差异。因此,您希望告诉您的站点,每个以
    /blog
    为前缀的url都应该指向构建目录中的文件(在
    /
    路径下)

  • 在您的main站点中,使用以下重定向规则创建一个
    netlify.toml
    配置文件:

  • 这告诉你的主站点它应该重定向到你的盖茨比博客,每个路径的url都以
    /blog/

    开头。你需要在netlify的
    连续部署
    菜单下设置
    基本目录吗?不,我不需要设置基本目录。因此,当你从netlify下载构建副本时,文件是否不在/blog中?本文的屏幕截图展示了如何下载构建内容的副本:,而这张截图更详细地解释了如何调试构建过程中发生的事情:没错。。文件不在/blog中。。有人建议我在运行build命令时运行package.json脚本,将public中的所有内容复制到blog文件夹中。这就是我使用盖茨比构建所做的--前缀路径&&cd public&&mkdir blog&&cd public&&mv*blog。。本地工作,但在netlify上它抛出一个奇怪的错误:10:31:42 AM:错误:输入文件丢失我尝试了你所做的,但失败了。我收到的错误是“缺少脚本:clean”。当我删除“npm run clean”时,我得到以下错误:“gatsby not found”。我快疯了。你是怎么做到的:)@hkucuk你似乎没有运行“npm安装清理”或“npm安装-g盖茨比”
    
    module.exports = {
      pathPrefix: `/blog`,
    }
    
    [[redirects]]
      from = "/blog/*"
      to = "/:splat"
    
    [[redirects]]
      from = "/blog/*"
      to = "https://my-gatsby-blog.netlify.app/:splat"
      status = 200