如何从Gatsby中的远程git存储库中检索markdown?

时间:2019-04-13 07:54:24

标签: git gatsby

我正在研究的盖茨比网站的博客文章位于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的新手,有人可以帮助我解决这个问题吗?先感谢您。

2 个答案:

答案 0 :(得分:0)

我在gatsby-source-git上取得了巨大的成功。尝试过gatsby-source-github,但是在工作时我遇到了一些晦涩的错误。尽管如果我没记错的话,后者会从私人仓库中撤出。

答案 1 :(得分:0)

不幸的是,gatsby-source-git的文档写得不好。 gatsby-source-filesystem中的代码无法正常工作,因为该插件提供了一些辅助功能,例如createFilePath和gatsby-source-git没有此功能,无法添加东西,显然互联网上没有人在使用它,因为没有gatsby-node.js文件的代码示例如何配置它。我为此奋斗了好几个小时,而且我快要放弃了。