gpt4 book ai didi

gatsby - 如何使用迁移的 HTML 内容为 Gatsby 创建博客条目

转载 作者:行者123 更新时间:2023-12-01 22:45:33 25 4
gpt4 key购买 nike

我正在尝试迁移博客,并且可以提取 HTML 格式的帖子以及标题、关键字、数据、元描述等。

我如何使用它们在 GatsbyJS 中创建博客文章?我只能找到使用 Markdown 的说明。由于复杂的格式以及一些内联 CSS 样式,手动迁移数百个并将它们转换为 Markdown 是不太可行的。

是否有某种方法可以将 HTML 添加到单独的 Javascript 文件中,以便将其包含在内(通过模板?)并且元数据位于 Markdown 文件中?

最佳答案

编辑:这是 an example repo

<小时/>

我认为您可以将 gatsby-source-filesystem 指向您的 html 文件夹并为其中的每个文件创建一个节点。一旦有了这些,您就可以在模板中查询它们,就像使用其他 Markdown 节点一样。

假设您的内容文件夹中有 html:

root
|--content
| `--htmls
| |--post1.html
| `--post2.html
|
|--src
| `--templates
| `--blog.js
|
|--gatsby-config.js
`--gatsby-node.js

gatsby-source-filesystem指向您的html文件夹:

// gatsby-config.js
{
resolve: `gatsby-source-filesystem`,
options: {
path: `${__dirname}/content/htmls`,
name: `html`,
},
},

然后在gatsby-node.js中,您可以使用loadNodeContent来读取原始html。从那时起,一切就变得非常简单了,只需按照 Gatsby 文档中关于 creating node 的示例进行操作即可。 .

const { createContentDigest } = require("gatsby-core-utils");

exports.onCreateNode = async ({
node, loadNodeContent, createNodeId, actions
}) => {

// only care about html file
if (node.internal.type !== 'File' || node.internal.mediaType !== 'text/html') return;

const { createNode } = actions;

// read the raw html content
const nodeContent = await loadNodeContent(node);

// set up the new node
const htmlNodeContent = {
id: createNodeId(node.relativePath), // required
content: nodeContent,
name: node.name, // take the file's name as identifier
internal: {
type: 'HTMLContent',
contentDigest: createContentDigest(nodeContent), // required
}
...otherNecessaryMetaDataProps
}

createNode(htmlNodeContent);
}

创建节点后,您可以使用以下命令查询它们

{
allHtmlContent {
edges {
node {
name
content
}
}
}
}

从那时起,几乎将它们视为其他 Markdown 节点。如果您需要解析内容(例如查找图像文件等),它会变得更加复杂。在这种情况下,我认为您需要研究类似 rehype 的内容。 .

关于gatsby - 如何使用迁移的 HTML 内容为 Gatsby 创建博客条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54437048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com