我正在使用默认值为sapper-template-rollup的Sapper创建博客。
在blog文件夹中,确实提到了从markdown文件生成数据。但是我找不到方法吗?
答案 0 :(得分:1)
您可能会发现this repo有帮助。我在Sapper Template存储库上还有一个open PR,首先是在2019年1月修改了旧的Markdown分支,然后在2019年5月添加了Svelte 3支持,但是看起来和克隆my repo on GitLab可能更容易,加上它还有更多我尚未添加到PR的当前依赖项更新。
答案 1 :(得分:1)
我接受@Antony Jones的方法。我将.md
文件放在路由/文件夹中,并使用了Svelte Preprocess Markdown,并将其设置在汇总配置中以处理.md
文件(将它们转换为.svelte
文件)。 .md
文件被组织在route /文件夹中的子文件夹中,并且每个文件夹都有一个索引页,该索引页将列出到由内部文件或文件夹构成的页面的链接。如果您想签出该仓库,请参见以下链接:link。这项工作仍在进行中。
但是,正如@rdela在他的评论中所说,这种方法不如使用您自己的代码来处理帖子来获取主题(如模板存储库中所做的那样),然后过滤帖子并将其放入基于文件夹的方式灵活得多。标签或标签之类的东西。
答案 2 :(得分:1)
我发布了https://github.com/mikenikles/sapper-template-with-markdown,其中显示了如何使用默认的Sapper模板,但使用*.md
文件作为博客文章内容。
主要更改是在src/routes/blog/_posts.js
中,我将内容替换为:
const fs = require('fs');
const frontMatter = require('front-matter');
const marked = require('marked');
const posts = fs.readdirSync('./src/posts').map(postFilename => {
const postContent = fs.readFileSync(`./src/posts/${postFilename}`, {
encoding: 'utf8'
});
const postFrontMatter = frontMatter(postContent);
return {
title: postFrontMatter.attributes.title,
slug: postFrontMatter.attributes.slug,
html: marked(postFrontMatter.body)
}
});
posts.forEach(post => {
post.html = post.html.replace(/^\t{3}/gm, '');
});
export default posts;
然后,每篇博客文章都作为Markdown文件存储在src/posts
中,格式如下:
---
title: 'What is Sapper?'
slug: 'what-is-sapper'
---
Your markdown content.
答案 3 :(得分:0)
使用MDsveX(这是由核心社区成员之一创建的Svelte Markdown处理器)可能会带来更多乐趣。
但是,是的,您也可以只使用marked
或snarkdown
(这就是我使用的方式),就像使用其他任何库一样-只需将其导入并将markdown代码传递给它。