我想"Gatsby Build"并部署到子目录



我已阅读https://www.gatsbyjs.org/docs/path-prefix/我在gatsby-configs.js.中添加了以下内容

{
pathPrefix: "/modules/custom/gatsby/gatsby-shopify-starter/public",
},

并且,我在终端上执行sudo gatsby build --prefix-paths。但是,我收到了这个错误消息。

ERROR
The "path" argument must be of type string. Received an instance of Object
Error: TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type s  tring. Received an instance of Object

我做错了什么?

Gatsby的pathPrefix只为您的项目路由(url(准备一个字符串。您的部署脚本应该处理公用文件夹在服务器上的最终位置。如果你真的想把你的gatsby项目发布到/public以外的地方(本地(,你可能需要做一些事情,比如在gatsby-node.js中的onPostBuild中使用fspath,把所有东西都转移到另一个目录。在撰写本文时,Gatsby不直接支持替代构建目录,因此在使用Gatsby-develop或Gatsby-serve本地查看时,您只能自己操作。

在gatsby-node.js中尝试这样的操作,但要更改路径以满足您的需求。这个例子将把你的项目发布到/public/blog,而不是默认的/public,这只是一个概念验证,但我测试了它,它有效:

const path = require('path');
const fs = require('fs');
exports.onPostBuild = function() {
fs.renameSync(path.join(__dirname, 'public'), path.join(__dirname, 'public-blog'));
fs.mkdirSync(path.join(__dirname, 'public'));
fs.renameSync(path.join(__dirname, 'public-blog'), path.join(__dirname, 'public', 'blog'));
};

最新更新