javascript - 向 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 上有奇怪的事情:
/blog/link1
不再像本地一样工作(不呈现页面)。如果我删除博客就像/link1
它呈现得很好当我检查各种资产 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 需要明确传递这个标志,不管他们的原因是什么,我不喜欢他们,因为这使得部署变得更加困难。对我来说,如果配置在那里使用它会更有意义,除了配置之外使用标志是一种过度杀伤(不知道他们为什么这样做的更多上下文)。
解决方案
您是否在 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和https://community.netlify.com/t/using -prefix-paths-with-gatsby-on-netlify/1175。
推荐阅读
- sql - 从多个属性表中汇总历史数据
- typescript - 解决依赖项中的 Typescript 模块定义冲突
- sql - 尝试获取所有月份的数据,但 LEFT JOIN 不起作用
- java - Apache PDFBox - PDFont 类型之间的区别
- perl - 如何解析文件中的字符串,向后搜索另一个字符串并将该字符串出现的整行导出到文件中
- arrays - 计算一个数组的个数
- julia - Julia append!() 无法将 Char 类型的对象“转换”为 String 类型的对象
- python - 如何搜索和替换在特定文本行之后找到的文本行
- javascript - 获取树中节点的祖先
- scala - Scala:使用 Trait + Companion 对象枚举实现