部署gatsby站点以使用--prefix-paths进行Netlify

时间:2019-06-03 10:28:31

标签: gatsby netlify

我正在尝试将一个用Gatsby构建的博客站点部署到Netlify。问题是,我想从/ blog服务该站点。 遵循文档之后,我将gatsby-config.js更改为包含pathPrefix,如下所示:

module.exports = {
  pathPrefix: `/blog`,
  siteMetadata: {...},
  plugins: [...]
}

接下来,我将构建命令更改为包括--prefix-paths:

gatsby build --prefix-paths

当我使用gatsby serve --prefix-paths在本地运行站点时,一切正常。但是,在我部署netlify之后,该站点仍然是从根目录/而不是/ 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还是其他?

2 个答案:

答案 0 :(得分:1)

假设您已经有一个主站点正在运行,并且您想要将其gatsby博客集成到其中。

  1. 在您的gatsby博客gatsby-config.js文件中,添加:
module.exports = {
  pathPrefix: `/blog`,
}
  1. 始终在您的gatsby博客中,使用以下命令在您网站的根目录中创建一个netlify.toml配置文件:
[[redirects]]
  from = "/blog/*"
  to = "/:splat"

此重定向的原因是--prefix-path不会更改gatsby将构建文件存储在构建目录中的位置。这会在以/blog为前缀的博客链接与文件路径之间产生差异。因此,您想告诉您的站点,每个以/blog为前缀的URL都应指向您的构建目录(在/路径下)中的文件。

  1. 在您的网站中,还使用以下重定向规则创建netlify.toml配置文件:
[[redirects]]
  from = "/blog/*"
  to = "https://my-gatsby-blog.netlify.app/:splat"
  status = 200

这告诉您的主站点,应针对以/blog/开头的每个路径的URL重定向到gatsby博客。

答案 1 :(得分:0)

对于遇到相同问题的任何人。我可以通过将公用文件夹中的所有文件复制到“ 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”提供的,一切正常。