Javascript 向Netlify提供serve命令
我正在网络上运行盖茨比应用程序。但我不想从根url(Javascript 向Netlify提供serve命令,javascript,gatsby,netlify,Javascript,Gatsby,Netlify,我正在网络上运行盖茨比应用程序。但我不想从根url(/)提供服务,而是从路径(即/blog)提供所有页面和资产 对于这个用例,完美的匹配似乎是必要的 它在本地运行得非常好,所有内容都是从/blog提供的,我的所有链接都是/blog/link1等等 这是my package.json: "scripts": { "build": "gatsby build --prefix-paths", "format&quo
/
)提供服务,而是从路径(即/blog
)提供所有页面和资产
对于这个用例,完美的匹配似乎是必要的
它在本地运行得非常好,所有内容都是从/blog
提供的,我的所有链接都是/blog/link1
等等
这是my 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`,
......
}
默认情况下,如果未传递--前缀路径
标志,则此前缀将被忽略,根url(/
)将作为起点
就我的情况而言,我在当地这样做:
gatsby build --prefix-paths && gatsby serve --prefix-paths
瞧,我让一切都正常运行(一切都是从/blog
提供的)
但我注意到netlify上有奇怪的事情:
/blog/link1
不再像本地(无页面呈现)那样工作。如果我像/link1
那样删除博客,它会呈现良好效果
/blog/page data/customers/page data.json
我意识到应用程序正在尝试从正确的位置加载资产,但它们不在那里
gatsby build --prefix-paths
gatsby serve
如何在生产中修改netlify上的service
命令
更新:
我将接受下面的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上修改build命令,如下面的Frans截图所示。然后把这个命令放到那里gatsby build--prefix path&&npm run move
我不知道为什么盖茨比要求明确地传递这个标志,不管他们的理由是什么,我不喜欢他们,因为这使它更难部署。对我来说,如果配置在那里,使用它会更有意义。在配置之外使用标志是一种过激行为(不知道他们为什么这样做的更多上下文)。您在Netlify backoffice中更改了它吗 我可以通过在
--前缀路径中添加后缀来更改deploy命令
有了新的更新信息,恐怕您只能选择使用命令脚本将编译后的文件夹移动到/blog
中:
"build": "npm run clean && gatsby build --prefix-paths && npm run move",
"move": "cd public && mkdir blog | mv * blog"
类似的问题也被解释了。您是否使用了盖茨比插件netlify
?@Z.Zlatev不,我不是,是吗?它能做什么?它能如何帮助我?谢谢,它将根据您的前缀为netlify生成重写规则。@Z.Zlatev这不是我想要的。我希望从现在开始,直到永远,我的所有路由都是/blog/anylink
,我不希望为我添加的每个新路由添加重写规则。我有什么遗漏吗?我以前从未使用过这个,我可能忽略了显而易见的,你能在答案中给我举个例子吗?或者给我指对地方。谢谢@Ferran Buireu。构建阶段确实工作正常,是的,我已经改变了这一点。正如我在文章中所描述的,构建阶段是成功的,但是没有正确调用serve,我可以在本地重现相同的行为。当我使用标志(--prefix path)构建而不使用标志时,行为100%与您检查的相同:?我已经更新了答案。事实上,我已经多次阅读了这篇文章和类似的文章,并且已经尝试过了。但是你再次链接它,让我意识到我的package.json中的build
被忽略了。所以,谢谢你,希望你的答案能得到更多的支持,我在更新中为那些努力解决这个问题的人们添加了一些额外的信息