向 Netlify 提供服务命令

Provide serve command to Netlify

我是 运行 netlify 上的 Gatsby 应用程序。但我不想从根 url (/) 提供它,而是从路径提供所有页面和资产,即 /blog.

对于这个用例来说,最合适的似乎是 https://www.gatsbyjs.org/docs/path-prefix/

它在本地完美运行,一切都由 /blog 提供,我的所有链接都是 /blog/link1

这是我的 package.json :

"scripts": {
    "build": "gatsby build --prefix-paths",
    "format": "prettier --write src/**/*.{js,jsx}",
    "start": "gatsby develop  --prefix-paths",
    "serve": "gatsby serve --prefix-paths",
    "now-build": "gatsby build --prefix-paths"
  }

我将这段配置添加到我的 gatsby-config.js :

module.exports = {
  pathPrefix: `/blog`,
  ......
}

默认情况下,如果未传递 --prefix-paths 标志,则此前缀将被忽略,根 url (/) 将作为起点。

就我而言,我在本地是这样做的:

gatsby build --prefix-paths && gatsby serve --prefix-paths

瞧,我得到了所有 运行 正确的东西(所有东西都来自 /blog)。

但我注意到 netlify 上有一些奇怪的事情:

  1. /blog/link1 不再像本地一样工作(没有呈现页面)。如果我删除像 /link1 这样的博客,它会很好地呈现

  2. 当我检查 ex 的各种资产 404 时: /blog/page-data/customers/page-data.json 我意识到该应用正在尝试从正确的位置加载资产,但它们不在那里

这让我相信构建命令已正确执行(我还在 netlify UI 中提供了构建命令)并且我也可以在构建日志中看到它执行。

我认为正在执行没有前缀的服务命令。此外,我通过这样做设法在本地重现了相同的行为:

gatsby build --prefix-paths
gatsby serve

如何在生产环境中修改 netlify 上的 serve 命令?

更新:

我将接受下面的 Frans 解决方案,因为它有效。但只是想给在我之后为此苦苦挣扎的人们留下一些提示。

无论出于何种原因,netlify 完全忽略 package.json 中的命令,这就是我现在得到的结果:

"scripts": {
    "build": "gatsby build --prefix-paths && npm run move",
    "move": "cd public && mkdir blog | mv * blog",
    "format": "prettier --write src/**/*.{js,jsx}",
    "start": "gatsby develop  --prefix-paths",
    "serve": "gatsby serve --prefix-paths",
    "now-build": "gatsby build  --prefix-paths"
  }

我不得不修改 Netlify UI 上的构建命令,如下面的 Frans 屏幕截图所示。并将此命令放在那里 gatsby build --prefix-paths && npm run move

不确定为什么 Gatsby 要求显式传递此标志,无论他们的原因是什么,我都不喜欢他们,因为这使得部署更加困难。对我来说,如果配置在那里使用它会更有意义,除了配置之外使用标志是一种矫枉过正(不知道更多上下文为什么他们这样做)。

你在 Netlify 后台修改了吗?

我可以通过添加后缀 --prefix-paths 来更改部署命令。

有了新的更新信息,恐怕您唯一的选择就是使用命令脚本将编译后的文件夹移动到 /blog 中:

"build": "npm run clean && gatsby build --prefix-paths && npm run move",
"move": "cd public && mkdir blog | mv * blog"

解释了类似的问题https://community.netlify.com/t/deploy-gatsby-site-to-netlify-with-prefix-paths/1267/3 and https://community.netlify.com/t/using-prefix-paths-with-gatsby-on-netlify/1175