首页 > 解决方案 > 向 Netlify 提供服务命令

问题描述

我在 netlify 上运行 Gatsby 应用程序。但我不想从根 url ( /) 提供它,而是从路径 ie 提供所有页面和资产/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. 当我检查各种资产 404 以获取 ex : /blog/page-data/customers/page-data.json并且我意识到该应用程序正在尝试从正确的位置加载资产但它们不存在

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

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

gatsby build --prefix-paths
gatsby serve

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

更新:

我将接受下面的 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 需要明确传递这个标志,不管他们的原因是什么,我不喜欢他们,因为这使得部署变得更加困难。对我来说,如果配置在那里使用它会更有意义,除了配置之外使用标志是一种过度杀伤(不知道他们为什么这样做的更多上下文)。

标签: javascriptgatsbynetlify

解决方案


您是否在 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/3https://community.netlify.com/t/using -prefix-paths-with-gatsby-on-netlify/1175


推荐阅读