我正在研究的盖茨比网站的博客文章位于content/posts
目录中。我使用gatsby-source-filesystem
访问这些文件并将它们转换为页面。
//gatsby-config.js
{
resolve: `gatsby-source-filesystem`,
options: {
path: `${post_dir}/content/posts/`,
name: "posts"
}
},
这是我的gatsby-node.js。
//gatsby-node.js
exports.onCreateNode = ({ node, getNode, boundActionCreators }) => {
const { createNodeField } = boundActionCreators;
if (node.internal.type === `MarkdownRemark`) {
const slug = createFilePath({ node, getNode, basePath: `pages` });
const separtorIndex = ~slug.indexOf("--") ? slug.indexOf("--") : 0;
const shortSlugStart = separtorIndex ? separtorIndex + 2 : 0;
createNodeField({
node,
name: `slug`,
value: `${separtorIndex ? "/" : ""}${slug.substring(shortSlugStart)}`
});
createNodeField({
node,
name: `prefix`,
value: separtorIndex ? slug.substring(1, separtorIndex) : ""
});
}
};
我在此项目中使用gatsby-starter-personal-blog入门程序。
现在,我想将content/posts
目录移到一个单独的存储库中,在这里我可以将其保持公开状态,以便其他人可以对其进行编辑并发送拉取请求。
根据gatsby-source-filesystem
文档,我认为createRemoteFileNode
方法可用于实现这一目标。我尝试使用它,但是需要使用几个参数传递给函数以使用createRemoteFileNode
创建节点。我正在努力在我的上下文中使用它。我是Gatsby
的新手,有人可以帮助我解决这个问题吗?先感谢您。
答案 0 :(得分:0)
我在gatsby-source-git上取得了巨大的成功。尝试过gatsby-source-github,但是在工作时我遇到了一些晦涩的错误。尽管如果我没记错的话,后者会从私人仓库中撤出。
答案 1 :(得分:0)
不幸的是,gatsby-source-git
的文档写得不好。
gatsby-source-filesystem
中的代码无法正常工作,因为该插件提供了一些辅助功能,例如createFilePath和gatsby-source-git
没有此功能,无法添加东西,显然互联网上没有人在使用它,因为没有gatsby-node.js
文件的代码示例如何配置它。我为此奋斗了好几个小时,而且我快要放弃了。